我的代碼:
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 使用上面發布的代碼,這就是我現在得到它的方式:

我該如何解決?
uj5u.com熱心網友回復:
正如 JonSG 在對您原始帖子的評論中指出的那樣,您在writerows()單行上呼叫(復數)eachline,.
將最后一行更改為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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/410009.html
標籤:
上一篇:將位元組可迭代轉換為str的可迭代,其中每個值是一行
下一篇:如何過濾NTILE視窗函式?
