如何获得操作员模块的排序功能来存储数据,以便可以附加文件?

时间:2019-02-15 03:55:04

标签: python python-3.x csv file-io

我试图将datalist.csv中的数据存储在变量“ sort”中,以便可以将数据附加到文件中,但是,它返回一个空字段。

datalist.csv的示例文件是

W_A11, 2000-02, Moving average, 59.66666667, 50.92582302, 68.40751031, Injuries, Number, Assault, Validated, Whole pop, All ages, Fatal,
W_A12, 2000-02, Moving average, 1.543343121, 1.317063238, 1.769623003, Per 100,000 people, Age-standardised rate, Assault, Validated, Whole pop, All ages, Fatal,
W_F11B, 2000-02, Moving average, 64.33333333, 55.25710337, 73.40956329, Injuries, Number, Falls, Validated, Whole pop, 0-74 years, Fatal

我不确定该怎么做。

infile = open("datalist.csv", "r")
    next(infile)
    for line in infile:
        line.strip("'")
        line.strip('"')
    csvfile = csv.reader(infile, delimiter=',')
    csvfile = list(csvfile)
    sort = sorted(csvfile, key= operator.itemgetter(6))
for line in sort:
   print(line)

我希望可以存储datalist.csv中的数据,并让print语句返回csv,但由第六个索引值组织。而是返回一个空字段。

1 个答案:

答案 0 :(得分:4)

此循环:

for line in infile:
    line.strip("'")
    line.strip('"')

完全消耗infile(并且对行不执行任何操作; strip不会对数据进行适当的修改,并且它可能并没有做您认为正在做的事情,它只会删除前导和尾随全行引号,而不是每个字段引号。

因此,当您到达时:

csvfile = csv.reader(infile, delimiter=',')

reader一无所有。

摆脱循环,离开(经过一些清理,例如使用with语句并传递newline=''以满足csv模块要求):

with open("datalist.csv", newline='') as infile:
    csvfile = csv.reader(infile, delimiter=',')
    next(csvfile)
    sort = sorted(csvfile, key=operator.itemgetter(6))
for line in sort:
    print(line)

它应该可以工作。