使用Python中的分隔符对CSV文件进行排序

时间:2012-07-23 19:13:03

标签: python csv

如何阅读包含以下内容的.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

谢谢!

2 个答案:

答案 0 :(得分: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
  • 打开输出
  • 使用$作为分隔符,使用in_file初始化CSV阅读器作为输入文件
  • 遍历每一行,执行以下操作:
    • 对所有元素进行排序(解析后)
    • 丢弃前2个(因为每行上的起始/结束分隔符,它们将始终为空字符串)
    • 使用,作为分隔符重新组合这些元素
    • 使用尾随换行符\n
    • 将其写入文件

编辑:修复了开始/结束$符号,方法是删除从CSV中解析出来的空元素([2:]位)

答案 1 :(得分:0)

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

row = sorted([item for item in row if item])