【发布时间】:2023-01-12 12:01:42
【问题描述】:
我正在尝试从 CSV 文件中删除特定文本。如果匹配,我希望它删除字符串并创建一个具有相同数据但没有文本的新 csv 文件。
如果不是,我希望它不创建新的 CSV 文件并打印“NOPE”。
如果匹配,我当前的脚本会从原始 CSV 文件中删除文本,并创建一个新的 CSV 文件。如果我输入的文本不正确,它会创建一个新的 CSV 文件,但不会更改任何内容或打印出我的错误消息。
这是我当前的代码:
import csv
result = input("Enter the text you want to remove from the CSV: ")
input_file = open('Input.csv', 'r')
output_file = open('Output.csv', 'w', newline='')
data = csv.reader(input_file)
writer = csv.writer(output_file)
def DEL():
try:
for line in data:
line = [value.replace(result, '') for value in line]
writer.writerow(line)
except Exception:
print('NOPE')
DEL()
【问题讨论】:
-
您期望在 try/except 块中出现什么异常?如果在字符串中找不到要替换的文本,
.replace()不会引发异常,如果那是您的想法... -
“如果我输入的文本不正确,它会创建一个新的 CSV 文件,但不会更改任何内容或打印出我的错误消息。”那么,你认为为什么会发生这种情况? (提示:代码说
output_file = open('Output.csv', 'w', newline='')的地方,你认为这是什么意思?这是发生在DEL运行之前还是之后?因此,它是否关心DEL内部发生的事情)? -
除此之外:用你自己的话说,你认为
try和except Exception:是什么意思?您打算如何使逻辑起作用?如果文件中不存在该字符串,您预计会引发哪种异常,为什么? -
除此之外:如果您一次处理一行文件,并在处理时写入每一行——当文件不包含输入时会发生什么?你怎么知道情况是否如此,直到你已经阅读了整个文件? (毕竟,它可能仍然在尚未阅读的部分中 - 对吗?)因此,更仔细地考虑预期的步骤以及它们需要发生的顺序。
标签: python python-3.x