1

如何读取具有以下内容的 .csv 文件

$C=2$A=3$B=1$

然后创建一个新的 .csv 文件,其内容相同,但$更改为,并按字母顺序排序,如下所示:

A=3,B=1,C=2

谢谢!

编辑:

这是我的以下代码。它最终在输出的开头给出了一个额外的逗号。

input = csv.reader(open('inputfile.csv','r'), delimiter='$')
output = open('outputfile.csv','w')
try:
    writer = csv.writer(output)
    for column in input:
        writer.writerow(sorted(column))
        print (sorted(column))
finally:
    out.close()

现在我的输入是:

$C=2$A=3$B=1$

我的输出是:

,A=3,B=1,C=2

我希望它是:

A=3,B=1,C=2

谢谢!

4

2 回答 2

2
with open('test.csv') as in_file, open('new.csv', 'w') as out_file:
    for line in csv.reader(in_file, delimiter='$'):
        out_file.write(','.join(sorted(line)[2:])+'\n')

基本上这样做是:

  • 打开输入为in_file
  • 打开输出为out_file
  • 使用作为输入文件$的分隔符初始化 CSV 阅读器in_file
  • 遍历每一行,执行以下操作:
    • 对所有元素进行排序(解析后)
    • 丢弃前 2 个(因为由于每行的开始/结束分隔符,它们总是空字符串)
    • ,使用作为分隔符重新组合这些元素
    • 用尾随换行符将其写入文件\n

编辑$:通过删除从 CSV 解析出来的空元素([2:]位)来修复开始/结束符号

于 2012-07-23T19:22:26.407 回答
0

您可以使用 acsv.reader来读取分隔符设置为 的文件'$'。然后对于返回的每一行,去掉空元素并对其余的进行排序:

row = sorted([item for item in row if item])
于 2012-07-23T19:22:11.793 回答