如何按字符串而不是字符拆分列表中的值?
How to split values in a list by string and not by characters?
我读入了一个文本文件并将行拆分为两个单独的列表。
我正在尝试将这两个列表中的每一个都转换为 csv,但我 运行 遇到了一些问题。
我当前的 python 代码(使用 python 3)写入 csv 如下所示:
with open(bad_csv_file, 'w') as myfile:
wr = csv.writer(myfile)
for item in bad_csv:
wr.writerow(item)
myfile.close()
我尝试写入 csv 的行如下所示:
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_csv
,据 reader 所知,它是未绑定的。命名可以更清楚一些,以便我们理解您的意思。
其次,如果您遍历 string
,它会 char
char
。
csvwriter
中的 row
是 strings or numbers 的序列。它会迭代它。您需要做的是在 spaces
上拆分您的 string
。 row = line.split(' ')
然后 row
将是您的一系列值。
如果要删除末尾的空格,请使用 row = line.rstrip().split(' ')
哦,如果您使用 with
打开文件,则无需关闭文件。
我读入了一个文本文件并将行拆分为两个单独的列表。 我正在尝试将这两个列表中的每一个都转换为 csv,但我 运行 遇到了一些问题。
我当前的 python 代码(使用 python 3)写入 csv 如下所示:
with open(bad_csv_file, 'w') as myfile:
wr = csv.writer(myfile)
for item in bad_csv:
wr.writerow(item)
myfile.close()
我尝试写入 csv 的行如下所示:
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_csv
,据 reader 所知,它是未绑定的。命名可以更清楚一些,以便我们理解您的意思。
其次,如果您遍历 string
,它会 char
char
。
csvwriter
中的 row
是 strings or numbers 的序列。它会迭代它。您需要做的是在 spaces
上拆分您的 string
。 row = line.split(' ')
然后 row
将是您的一系列值。
如果要删除末尾的空格,请使用 row = line.rstrip().split(' ')
哦,如果您使用 with
打开文件,则无需关闭文件。