如何替换使用 Google 工作表 API 下载的 CSV 文件中的换行符?

How do I replace new lines characters in CSV files downloaded using the Google sheets API?

我正在使用 Python 3.9 和 Google Sheets SDK for Python v 3.6.0。我想下载一个 Google sheet 作为 CSV,我想用任何东西替换单元格数据中出现的任何换行符。我尝试了以下

    client = gspread.authorize(creds)
    sheet = client.open('ChiCommons_Directory')

    # get the third sheet of the Spreadsheet.  This
    # contains the data we want
    sheet_instance = sheet.get_worksheet(3)

    url = 'https://docs.google.com/spreadsheets/d/' + sheet.id + '/gviz/tq?tqx=out:csv&gid=' + str(sheet_instance.id)
    headers = {'Authorization': 'Bearer ' + client.auth.token}
    res = requests.get(url, headers=headers)
    output = re.sub(r'[\n\r]', '', res.text)
    print(output)

这似乎没有替代任何东西。具体线路 输出 = re.sub(r'[\n\r]', '', res.text) 似乎没有做它的工作。但是,我只想替换单元格数据中的新行,而不是分隔每行数据的新行。不确定最好的方法。

我相信你的目标如下。

  • 您想替换每个单元格中的换行符。
  • 您不想替换 CSV 数据中每一行的换行符。

修改点:

  • 当我测试你的脚本时,每行的换行符也被删除了。因此,在这种情况下,我想提出以下流程。
    1. 解析 CSV 数据并将其转换为列表。
    2. 删除每个单元格中的换行符。
    3. 将列表转换为 CSV 数据。

当以上几点反映到你的脚本中,就会变成下面这样。

修改后的脚本:

请按如下方式修改您的脚本。

从:
output = re.sub(r'[\n\r]', '', res.text)
print(output)
到:
ar = csv.reader(io.StringIO(res.text, newline=""))
output = "\n".join([",".join(map(str, ['"' + c.replace('\n', '') + '"' for c in r])) for r in ar])
# or, output = "\n".join([",".join(map(str, ['"' + re.sub(r'[\n\r]', '', c) + '"' for c in r])) for r in ar])
print(output)
  • 在这种情况下,请使用import csvimport io

  • 如果不想为每个单元格添加",请修改如下。

      output = "\n".join([",".join(map(str, [c.replace('\n', '') for c in r])) for r in ar])