Python 如何按字符串而不是按字符分割列表中的值?

Python 如何按字符串而不是按字符分割列表中的值?,python,csv,export-to-csv,Python,Csv,Export To Csv,我已经读入一个文本文件,并将行分成两个单独的列表。 我正在尝试将这两个列表转换为csv,但我遇到了一点问题 我当前用于写入csv的python代码(使用python 3)如下所示: with open(bad_csv_file, 'w') as myfile: wr = csv.writer(myfile) for item in bad_csv: wr.writerow(item) myfile.close() 0000002 1 1E-1

我已经读入一个文本文件,并将行分成两个单独的列表。 我正在尝试将这两个列表转换为csv,但我遇到了一点问题

我当前用于写入csv的python代码(使用python 3)如下所示:

with open(bad_csv_file, 'w') as myfile:
      wr = csv.writer(myfile)
      for item in bad_csv:
        wr.writerow(item)
      myfile.close()
0000002 1 1E-10 1851 7 5 12 1851               
0000002 0 -97.6 22.2 -9999 -9999 0 0 97687 101325 45728 41.2 1e+05 1 0 0 0 0 0 -9999 -9999 -9999 -9999
0000003 1 1E-10 1851 7 10 12 1851               
0000003 0 -60 12 -9999 -9999 0 0 99993 101325 55402 25.7 1e+05 1 0 0 0 0 0 -9999 -9999 -9999 -9999
0000004 50 1E-10 1851 8 16 0 1851   
我试图写入csv的行如下所示:

with open(bad_csv_file, 'w') as myfile:
      wr = csv.writer(myfile)
      for item in bad_csv:
        wr.writerow(item)
      myfile.close()
0000002 1 1E-10 1851 7 5 12 1851               
0000002 0 -97.6 22.2 -9999 -9999 0 0 97687 101325 45728 41.2 1e+05 1 0 0 0 0 0 -9999 -9999 -9999 -9999
0000003 1 1E-10 1851 7 10 12 1851               
0000003 0 -60 12 -9999 -9999 0 0 99993 101325 55402 25.7 1e+05 1 0 0 0 0 0 -9999 -9999 -9999 -9999
0000004 50 1E-10 1851 8 16 0 1851   
我当前的输出如下所示:

2,0,1,0,1,0,0,2, ,1,5,8, ,1, ,1,5,8, ,1,4,1,6, ,0, ,0, ,0, ,0, ,0, ,0, ,0, ,0, ,0, ,0, ,0, ,0, ,0, ,0, ,0, , , ,"
"
0,0,0,0,0,0,1, ,1,4, ,1,E,-,1,0, ,1,8,5,1, ,6, ,2,5, ,0, ,1,8,5,1, , , , , , , , , , , , , , , ,"
"
0,0,0,0,0,0,2, ,1, ,1,E,-,1,0, ,1,8,5,1, ,7, ,5, ,1,2, ,1,8,5,1, , , , , , , , , , , , , , , ,"
"
0,0,0,0,0,0,2, ,0, ,-,9,7,.,6, ,2,2,.,2, ,-,9,9,9,9, ,-,9,9,9,9, ,0, ,0, ,9,7,6,8,7, ,1,0,1,3,2,5, ,4,5,7,2,8, ,4,1,.,2, ,1,e,+,0,5, ,1, ,0, ,0, ,0, ,0, ,0, ,-,9,9,9,9, ,-,9,9,9,9, ,-,9,9,9,9, ,-,9,9,9,9,"
"
0,0,0,0,0,0,3, ,1, ,1,E,-,1,0, ,1,8,5,1, ,7, ,1,0, ,1,2, ,1,8,5,1, , , , , , , , , , , , , , , ,"

它似乎是按字符分割的,而不是整个数字字符串。任何帮助都将不胜感激,谢谢

首先,在您的代码中,您迭代了
bad\u csv
,据读者所知,它是未绑定的。名字可以更清楚一些,让我们明白你的意思

其次,如果你迭代一个
字符串
,它将通过
char
完成
char
csvwriter
中的
是一个序列。它将在上面迭代。您需要做的是在
空格上拆分
字符串
<代码>行=行。拆分(“”)
然后,
将是您的值序列。 如果要删除结尾中的空格,请使用
row=line.rstrip().split(“”)


哦,如果你用
打开一个文件,你就不需要关闭它了。这在很大程度上解决了问题,你知道为什么当文件被转换成csv时,我会在最后一行得到一对引号吗?i、 e.0000001,0,-94.8,28,-2.73,0,0,09739610132546887,41.2125936,1.92,0,0,0,0,-9999,-9999,-9999,“-9999”是的,因为那里有一个
空格,它被视为
字符串,而不是
数字。字符串可能包含CSV分隔符(
),因此它会添加引号。解决方案可能是在拆分之前先删除这些尾随空格。查看
str.rstrip()