我必須忽略某些行并替換 csv 中的某些單詞,我嘗試使用以下替換,但看起來它被忽略了
if "myword" not in line:
替換我使用的文本
csv_writer.writerow(line.replace("oldword", "newword"))
但這會出錯有人知道為什么嗎?用代碼編輯
import csv
with open(r'excelfile.csv') as csv_file:
csv_reader = csv.DictReader(csv_file)
with open('new_names.csv', 'w', newline='') as new_file:
fieldnames = ['value', 'type', 'description']
writer=csv.writer(new_file)
csv_writer =csv.DictWriter(new_file, fieldnames=fieldnames, delimiter= ',', extrasaction='ignore')
csv_writer.writeheader()
for line in csv_reader:
csv_writer.writerow(line)
uj5u.com熱心網友回復:
因為您使用的是 csv.DictReader,所以這些值嵌套在字典結構中。例如,如果檔案有一行內容為:
has myword,and oldword,foo
line 變數將包含:
OrderedDict([('value', 'has myword'), ('type', 'and oldword'), ('description', 'foo')])
就像評論中建議的@furas 一樣,我通過添加回圈print(line)來確定這一點。for line...
所以你的邏輯測驗必須考慮到這一點。
以下是一些示例,您可以根據自己的確切目的進行調整:
import csv
with open(r'excelfile.csv') as csv_file:
csv_reader = csv.DictReader(csv_file)
with open('new_names.csv', 'w', newline='') as new_file:
fieldnames = ['value', 'type', 'description']
writer=csv.writer(new_file)
csv_writer =csv.DictWriter(new_file, fieldnames=fieldnames, delimiter= ',', extrasaction='ignore')
csv_writer.writeheader()
for line in csv_reader:
# Substitute oldword by newword in all values in line
line = {k: v.replace("oldword", "newword") for k, v in line.items()}
# Reject line if any value in line is exactly "myword":
if "myword" not in line.values():
csv_writer.writerow(line)
# Reject line if any value in line contains "myword" as a substring:
if not any("myword" in value for value in line.values()):
csv_writer.writerow(line)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/428825.html
上一篇:由于某些欄位中出現意外換行,SQLCOPYINTO無法決議CSV。ROWTERMINATOR和FIELDQUOTE引數不起作用
