在写入CSV文件时使用Python3-.replace()字符串
我试图循环浏览从网站表中获取的每行数据的每一列,以查找和删除特定的子字符串。检查并替换行中的每一列(如果需要)后,应将该行追加到CSV文件中 我试过几种不同的方法,但都不管用。 这是我目前的代码在写入CSV文件时使用Python3-.replace()字符串,python,csv,replace,beautifulsoup,export-to-csv,Python,Csv,Replace,Beautifulsoup,Export To Csv,我试图循环浏览从网站表中获取的每行数据的每一列,以查找和删除特定的子字符串。检查并替换行中的每一列(如果需要)后,应将该行追加到CSV文件中 我试过几种不同的方法,但都不管用。 这是我目前的代码 with open('Transactions.csv', 'w', newline='') as outfile: writer = csv.writer(outfile) writer.writerow([account_name, account_number]) writ
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)
文件仍在生成中,没有删除任何子字符串。
请帮助。感谢Barmar在原始问题的评论中对其进行了排序 这是我目前的工作和简化代码
# Writing website data to a CSV file
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:
str = col.replace("+$", "").replace("minus$", "")
column_array.append(str)
writer.writerow(column_array)
感谢Barmar在原始问题的评论中对其进行了整理 这是我目前的工作和简化代码
# Writing website data to a CSV file
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:
str = col.replace("+$", "").replace("minus$", "")
column_array.append(str)
writer.writerow(column_array)
字符串是不可变的,
col.replace()
不会修改字符串。您需要将结果分配回col
:col=col.replace(…)
不需要if()
语句。如果找不到字符串,replace()
将返回未修改的字符串。谢谢!正如您在第一条评论中所说,我通过将替换项分配给一个新字符串来实现它。但是,当我查找多个字符串时,不确定如何删除if()语句。哦,您使用的是elif
,因此您只想替换其中一个,而不是全部?现在全部排序,谢谢!刚刚发布了工作代码作为答案。字符串是不可变的,col.replace()
不会修改字符串。您需要将结果分配回col
:col=col.replace(…)
不需要if()
语句。如果找不到字符串,replace()
将返回未修改的字符串。谢谢!正如您在第一条评论中所说,我通过将替换项分配给一个新字符串来实现它。但是,当我查找多个字符串时,不确定如何删除if()语句。哦,您使用的是elif
,因此您只想替换其中一个,而不是全部?现在全部排序,谢谢!刚刚发布了工作代码作为答案。