按 CSV 中的列排序并写入 Python 中的新 CSV 文件
Sorting by column in a CSV and writing to a new CSV file in Python
我的代码:
import csv
import operator
first_csv_file = open('/Users/jawadmrahman/Downloads/account-cleanup-3 array/example.csv', 'r+')
csv_sort = csv.reader(first_csv_file, delimiter=',')
sort = sorted(csv_sort, key=operator.itemgetter(0))
sorted_csv_file = open('new_sorted2.csv', 'w+', newline='')
write = csv.writer(sorted_csv_file)
for eachline in sort:
print (eachline)
write.writerows(eachline)
我有一个示例 csv 文件:
我想按第一列排序并以这种方式获得结果:
1,9
2,17,
3,4
7,10
使用上面发布的代码,这就是我现在得到它的方式:
我该如何解决这个问题?
正如 JonSG 在对原始 post 的评论中指出的那样,您在一行 eachline
.
上调用 writerows()
(复数)
将最后一行更改为 write.writerow(eachline)
就可以了。
深入看问题
writerows()
需要“值列表的列表”。外部列表包含行,每行的内部列表实际上是单元格(该行的列):
sort = [
['1', '9'],
['2', '17'],
['3', '4'],
['7', '10'],
]
writer.writerows(sort)
将生成您期望的具有两列和四行的排序 CSV(并且您的打印语句显示)。
当您用单行调用 writerows()
时:
for eachline in sort:
writer.writerows(eachline)
你得到一些非常奇怪的输出:
它在包含多行的外部列表中解释 eachline
,这意味着...
它将 eachline
中的每个项目解释为具有单独列的行...
并且 eachline
中的每个项目都是一个 Python 序列 ,字符串,因此 writerows()
遍历每个字符在您的字符串中,将每个字符视为其自己的列...
['1','9']
被视为两个单列行,['1']
和 ['9']
:
1
9
['2', '17']
看成单列行['2']
和双列行['1', '7']
:
2
1,7
我的代码:
import csv
import operator
first_csv_file = open('/Users/jawadmrahman/Downloads/account-cleanup-3 array/example.csv', 'r+')
csv_sort = csv.reader(first_csv_file, delimiter=',')
sort = sorted(csv_sort, key=operator.itemgetter(0))
sorted_csv_file = open('new_sorted2.csv', 'w+', newline='')
write = csv.writer(sorted_csv_file)
for eachline in sort:
print (eachline)
write.writerows(eachline)
我有一个示例 csv 文件:
我想按第一列排序并以这种方式获得结果:
1,9
2,17,
3,4
7,10
使用上面发布的代码,这就是我现在得到它的方式:
我该如何解决这个问题?
正如 JonSG 在对原始 post 的评论中指出的那样,您在一行 eachline
.
writerows()
(复数)
将最后一行更改为 write.writerow(eachline)
就可以了。
深入看问题
writerows()
需要“值列表的列表”。外部列表包含行,每行的内部列表实际上是单元格(该行的列):
sort = [
['1', '9'],
['2', '17'],
['3', '4'],
['7', '10'],
]
writer.writerows(sort)
将生成您期望的具有两列和四行的排序 CSV(并且您的打印语句显示)。
当您用单行调用 writerows()
时:
for eachline in sort:
writer.writerows(eachline)
你得到一些非常奇怪的输出:
它在包含多行的外部列表中解释
eachline
,这意味着...它将
eachline
中的每个项目解释为具有单独列的行...并且
eachline
中的每个项目都是一个 Python 序列 ,字符串,因此writerows()
遍历每个字符在您的字符串中,将每个字符视为其自己的列...['1','9']
被视为两个单列行,['1']
和['9']
:1 9
['2', '17']
看成单列行['2']
和双列行['1', '7']
:2 1,7