【问题标题】:Add the actual characters '\n' to a string in python?将实际字符'\ n'添加到python中的字符串?
【发布时间】:2021-10-11 23:16:39
【问题描述】:

我正在编写一个简短的程序来遍历一个目录并为一堆 csv 编写创建表和从 csv 语句加载并将它们全部放入 mySQL。我确信有一种更简单的方法可以做到这一点,但我认为自己制作会很有趣。

这是我在 python 中构建加载 csv 语句的行之一,其中 l_d 是我存储它的变量,f 是文件路径,n 是表名:

 l_d = "LOAD DATA INFILE " + "'" + f + "'" + "\nINTO TABLE " + n + "\nFIELDS TERMINATED BY ','\nENCLOSED BY '" + '"' +"'" + "\nLINES TERMINATED BY" +"\'\n\'" + "\nIGNORE 1 ROWS;"

我想要的SQL语句是:

LOAD DATA INFILE 'file.csv'
INTO TABLE table
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY'\n'
IGNORE 1 ROWS;

但我得到的总是

LOAD DATA INFILE 'file.csv'
INTO TABLE table
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY'
'
IGNORE 1 ROWS;

因为它认为我的 \n 应该是换行符而不是实际字符。

我怎样才能让实际的字符显示在这里?

另外,我知道我在原始语句中的整个字符串连接有点恶心(我对此很陌生),所以任何关于如何改进的一般提示也将不胜感激:)

【问题讨论】:

  • 要么r'\n'(使字符串原始,因此所有字符都按原样解释)或'\\n'(转义反斜杠,因此将其解释为文字反斜杠);要获得更好/更快的字符串格式,您可以使用f strings
  • 非常感谢!完美运行
  • @Matiiss 没错,但在某些情况下,我们需要转义字符并编写以字母 n 开头的文件夹名称,例如 ????所以我认为习惯使用退格转义字符会更好。
  • @mohamedyahya 在路径的特定情况下,原始字符串的使用方式比转义反斜杠更容易,您需要添加一个字母 r 而不是双反斜杠,是的,在大多数情况下不需要对于原始字符串,但我只是提供了两种方法,原始和转义方式(您似乎在我的评论中错过了)
  • @Matiiss 是的,我同意你的观点,但这只是一个可能有帮助的建议,一点也不冒犯。

标签: python line-breaks


【解决方案1】:

为了避免退格,在它之前添加另一个:

\\n

得到\n

所以你的代码将是:

 l_d = "LOAD DATA INFILE " + "'" + f + "'" + "\nINTO TABLE " + n + 
 "\nFIELDS TERMINATED BY ','\nENCLOSED BY '" + '"' +"'" + "\nLINES 
 TERMINATED BY" +"\'\\n\'" + "\nIGNORE 1 ROWS;"

【讨论】:

    【解决方案2】:

    print("你好\ \n") #this 打印一个原始的“\n”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-26
      • 1970-01-01
      • 2020-02-04
      相关资源
      最近更新 更多