【发布时间】:2011-03-21 02:18:14
【问题描述】:
当我试图解析一个由 MS SQL 2005 express edition 的查询导出的 csv 时,python 给我的字符串完全出乎我的意料。例如,如果 csv 文件中的行是:"
aaa,bbb,ccc,dddd",然后当 python 将其解析为字符串时,它变成:" a a a a , b b b , c c c, d d d d" 类似的东西.....会发生什么???
我试图删除代码中的空格但不起作用。
import os
import random
f1 = open('a.txt', 'r')
f2 = open('dec_sql.txt', 'w')
text = 'abc'
while(text != ''):
text = f1.readline()
if(text==''):
break
splited = text.split(',')
for i in range (0, 32):
splited[i] = splited[i].replace(' ', '')
sql = 'insert into dbo.INBOUND_RATED_DEC2010 values ('
sql += '\'' + splited[0] + '\', '
sql += '\'' + splited[1] + '\', '
sql += '\'' + splited[2] + '\', '
sql += '\'' + splited[3] + '\', '
sql += '\'' + splited[4] + '\', '
sql += '\'' + splited[5] + '\', '
sql += '\'' + splited[6] + '\', '
sql += '\'' + splited[7] + '\', '
sql += '\'' + splited[8] + '\', '
sql += '\'' + splited[9] + '\', '
sql += '\'' + splited[10] + '\', '
sql += '\'' + splited[11] + '\', '
sql += '\'' + splited[12] + '\', '
sql += '\'' + splited[13] + '\', '
sql += '\'' + splited[14] + '\', '
sql += '\'' + splited[15] + '\', '
sql += '\'' + splited[16] + '\', '
sql += '\'' + splited[17] + '\', '
sql += '\'' + splited[18] + '\', '
sql += '\'' + splited[19] + '\', '
sql += '\'' + splited[20] + '\', '
sql += '\'' + splited[21] + '\', '
sql += '\'' + splited[22] + '\', '
sql += '\'' + splited[23] + '\', '
sql += '\'' + splited[24] + '\', '
sql += '\'' + splited[25] + '\', '
sql += '\'' + splited[26] + '\', '
sql += '\'' + splited[27] + '\', '
sql += '\'' + splited[28] + '\', '
sql += '\'' + splited[29] + '\', '
sql += '\'' + splited[30] + '\', '
sql += '\'' + splited[31] + '\', '
sql += '\'' + splited[32] + '\' '
sql += ')'
print sql
f2.write(sql+'\n')
f2.close()
f1.close()
【问题讨论】:
-
您可以发布输入文件吗?这将使诊断更容易。
-
问题已解决。该文件是一个 unicode 文件。我使用 Ultraedit 将其转换为 ascii 文件,然后 python 再次工作。谢谢大家。
-
如果您确定哪些字符被拒绝,您可以在我的代码示例中添加到 ENCODING_REGEX_REPLACEMENT_LIST 并跳过 Ultraedit 步骤。