首页 > 解决方案 > 将实际字符'\ n'添加到python中的字符串?

问题描述

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

这是我在 python 中构建 load 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 应该是换行符而不是实际字符。

我怎样才能让实际的角色出现在这里?

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

标签: pythonline-breaks

解决方案


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

\\n

得到\n

所以你的代码将是:

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

推荐阅读