csv文件在没有pandas的python中按列排序

时间:2016-12-21 08:43:07

标签: python sorting row

我的python课程仍在继续,我坚持这个练习,我有这样的csv:

John^Reporter^Angola
Mary^Engineer^Canada
Anna^Manager^India

并希望实现这一目标:

Angola^John^Reporter
Canada^Engineer^Mary
Anna^India^Manager

所以每一行都按照从左到右的列中的内容进行排序。

我尝试使用此代码:

with open('file.csv', 'r') as sortrow:
    reader = csv.reader(sortrow.readlines(), delimiter='^')
    reader = sorted(reader, key=lambda x: x[0])
    with open(syspath+temppath+'/added5.csv', 'w') as sortwrite:
        writer = csv.writer(sortwrite, delimiter='^')
        for row in reader:
            writer.writerow(row)

我认为排序(阅读器,键= lambda x:x [0])将完成这项工作但不是。 请帮忙。 提前致谢

1 个答案:

答案 0 :(得分:1)

使用reader = sorted(reader, key=lambda x: x[0]),您的密钥是第一列(x[0])。

在您的情况下,您不希望对行进行排序,而是对列进行排序,所以

1)不要对读者进行排序

2)就这样做:

    for row in reader:
        writer.writerow(sorted(row))

完整的固定代码:

with open('file.csv', 'rU') as sortrow:
    reader = csv.reader(sortrow, delimiter='^')  # don't use readlines()
    with open(syspath+temppath+'/added5.csv', 'w', newline='') as sortwrite:
        writer = csv.writer(sortwrite, delimiter='^')
        for row in reader:
            writer.writerow(sorted(row))  # sort done here

请注意,如果相同列的数据之间存在一致性,则列排序会丢失