我的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])将完成这项工作但不是。 请帮忙。 提前致谢
答案 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
请注意,如果相同列的数据之间存在一致性,则列排序会丢失