[英]csv file sorting rows by columns in python without pandas
我在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)
我认为sorted(reader,key = lambda x:x [0])可以完成工作,但不能完成。 请帮忙。 提前致谢
随着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
请注意,如果相同列的数据之间存在一致性,则列排序会丢失该一致性
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.