【发布时间】:2021-04-11 20:35:26
【问题描述】:
我正在尝试遍历从网站表中抓取的每一行数据的每一列,以查找和删除特定的子字符串。在检查了一行中的每一列并根据需要替换后,应将该行附加到 CSV 文件中。
我尝试了一些不同的方法,但没有任何效果。 这是我当前的代码。
with open('Transactions.csv', 'w', newline='') as outfile:
writer = csv.writer(outfile)
writer.writerow([account_name, account_number])
writer.writerow(["Date", "Details", "Debit", "Credit", "Balance"])
for row in soup.select('tr'):
text_columns = [td.a.get_text(strip=True) if td.a else td.get_text(strip=True) for td in row.select('td')]
column_array = []
for col in text_columns:
if (col.find("+$") != -1):
col.replace("+$", "")
column_array.append(col)
elif (col.find("minus$") != -1):
col.replace("minus$", "")
column_array.append(col)
else:
column_array.append(col)
writer.writerow(column_array)
在没有删除任何子字符串的情况下仍会生成该文件。 请帮忙。
【问题讨论】:
-
字符串是不可变的,
col.replace()不会修改字符串。您需要将结果分配回col:col = col.replace(...) -
不需要
if()语句。如果未找到该字符串,replace()将返回未修改的字符串。 -
谢谢!正如您在第一条评论中所说,我通过将替换分配给新字符串来使其工作。不知道如何删除 if() 语句但是当我正在寻找多个字符串时。
-
哦,你用的是
elif,所以你只想替换其中一个,而不是全部? -
全部整理完毕,谢谢!刚刚发布了工作代码作为答案。
标签: python csv replace beautifulsoup export-to-csv