【问题标题】:How to split values in a list by string and not by characters?如何按字符串而不是字符拆分列表中的值?
【发布时间】:2015-10-26 11:46:13
【问题描述】:

我已读入一个文本文件并将这些行分成两个单独的列表。 我正在尝试将这两个列表中的每一个都转换为 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()

我尝试写入 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, , , , , , , , , , , , , , , ,"

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

【问题讨论】:

    标签: python csv export-to-csv


    【解决方案1】:

    首先,在您的代码中,您遍历bad_csv,据读者所知,它是未绑定的。命名可能会更清楚一些,以便我们理解您的意思。

    其次,如果您遍历 string,它将通过 char 完成 charcsvwriter 中的rowstrings or numbers 的序列。它将对此进行迭代。您需要做的是将您的string 拆分为spacesrow = line.split(' ') 然后row 将是您的值的序列。 如果你想删除最后的空格使用row = line.rstrip().split(' ')

    哦,如果您使用with 打开文件,则无需关闭文件。

    【讨论】:

    • 这在大多数情况下都完成了,知道为什么我在转换为 csv 时会在行尾得到一对引号吗?即 0000001,0,-94.8,28,-2.73,0,0,0,97396,101325,46887,41.2,125936,1.92,0,0,0,0,0,-9999,-9999,-9999, “-9999”
    • 是的,因为那里有一个space,它被视为string,而不是numbers。字符串可能包含 CSV 分隔符(,;),因此它会添加引号。解决方案可能是在拆分之前先删除那些尾随空格。查看str.rstrip()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 2011-01-08
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多