例如,我有如下資料集:
日期、類別、金額、描述
06-06-2022,食品,300.0,慶典
02-09-2021,運輸,3300.0,運營
而我需要在滿足條件1(如描述)和條件2(如類別)的情況下洗掉其中一個條目,得到的結果如下:
日期、類別、金額、描述
06-06-2022,食品,300.0,慶典
到目前為止,我對條件陳述句沒有任何問題。然而,當我執行時,它將在第一行產生一個輸出,每個字符都有逗號,沒有其他資訊。
import os
import csv
with open("filename.csv"/span>,"r ") as r, open("output.csv"/span>,"w") as f:
writer=csv.writer(f)
for line in r:
if condition_1 in line and condition_2 in line:
print(line) #顯示將被洗掉的行。
else:
writer.writerow(line) #write other lines to new file.
os.remove('filename.csv')
os.rename('output.csv', "filename.csv")
如果有任何幫助或提示,我們將不勝感激!
。uj5u.com熱心網友回復:
csv是一個有用的內置標準庫。關于學習它,你忘了包括csv.reader。只需將檔案作為一個物件傳遞給 csv.reader,就像你對 csv.writer 所做的那樣。
這是你可能想要的一個作業方案:
這是個作業方案。
# import os。
import csv
with open("filename.csv"/span>,"r ") as r, open("output.csv"/span>,"w") as f:
# 將檔案物件傳遞給reader(),以獲得閱讀器物件。
reader = csv.reader(r)
writer = csv.writer(f)
# 使用閱讀器物件遍歷csv中的每一行。
for row in reader:
# row變數是一個串列,代表csv中的一個行。
# print(row)/span>
# print row as original text line
# print(', '.join(row))
if row[0] == '06-06- 2022' and row[1] == 'Food':
print(f'{row} to be deleted') #顯示將被洗掉的行。
else:
writer.writerow(row)
# os.remove('filename.csv')。
# os.rename('output.csv', "filename.csv")
在這里嘗試一下 https://replit.com/@huydhoang/Delete-row-from-csv#main.py
uj5u.com熱心網友回復:
你已經在你的line變數中擁有一串逗號分隔的值。你不需要使用csv writer。
相反,你可以嘗試用append open('output.csv', 'a')模式打開檔案,并使用 f.write(line)
編輯:
完整的代碼(作業)
import os
with open("filename.csv"/span>, "r") as r, open("output.csv"/span>, "a"/span>) as f:
for line in r:
if 'transport' in line and '3300.0' in line:
print(line) # show the line that will be deleted
else:
f.write(line) # 寫入其他行到新檔案。
os.remove('filename.csv')
os.rename('output.csv', "filename.csv")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/325713.html
標籤:
