【问题标题】:Python3 - .replace() strings while writing to a CSV filePython3 - 写入 CSV 文件时的 .replace() 字符串
【发布时间】: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() 不会修改字符串。您需要将结果分配回colcol = col.replace(...)
  • 不需要if() 语句。如果未找到该字符串,replace() 将返回未修改的字符串。
  • 谢谢!正如您在第一条评论中所说,我通过将替换分配给新字符串来使其工作。不知道如何删除 if() 语句但是当我正在寻找多个字符串时。
  • 哦,你用的是elif,所以你只想替换其中一个,而不是全部?
  • 全部整理完毕,谢谢!刚刚发布了工作代码作为答案。

标签: python csv replace beautifulsoup export-to-csv


【解决方案1】:

感谢 Barmar 在原始问题的 cmets 中对其进行了排序。

这是我当前的工作和简化代码。

# 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-16
    • 2016-10-22
    • 2020-12-06
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    相关资源
    最近更新 更多