从 Python 中的响应行中删除字符

问题描述

关于类似问题here

我正在尝试将字典响应保存为 csv 文件。多亏了 Malcolm

,我已经完成了 90% 的我想要的格式

这是我正在使用的编写器代码

import csv
with open("out.csv","w",encoding="utf8") as f:
    writer = csv.writer(f)
    headers = ["Keys","Clicks","Impressions","CTR","Position"]
    writer.writerow(headers)
    for row in rows:
        writer.writerow(
            [
                ",".join(row.get("keys",[])),row["clicks"],row["impressions"],row["ctr"],row["postition"],]
        )

除非我选择多个“键”,否则它可以完美运行

一个“键”的输出

Keys,Clicks,Impressions,CTR,Position
amp pwa,1,4,0.25,7.25

选择两个时的输出

Keys,Position
"amp pwa,MOBILE",2,0.5,5.5

键是使用其代码传递给 Google Search Console API 的维度:

request = {
      'startDate': flags.start_date,'endDate': flags.end_date,'dimensions': ['query'],'rowLimit': 20
      
  }

我正在编写另一个程序,该程序将遍历所有生成的 CSV 文件(我一次运行多个响应)并删除所有双引号。

认为你们可能有一个更优雅的解决方案,而不是用这种方式强力武装它。

对 Python 和一般编码来说非常新,所以如果我忽略了一些明显的东西,我深表歉意。非常感谢任何帮助。

我尝试了以下方法 ",".join(str(row.get("keys",[])).replace('"','')) 但这使得结果就像每个字符后面的逗号

我还尝试编辑作者以包含一个引用参数writer = csv.writer(f,quoting=csv.QUOTE_NONE)

这导致了这个错误_csv.Error: need to escape,but no escapechar set

我尝试同时使用 \0 和 '' 作为转义字符,但它给了我同样的错误

使用 \n 或 ',' 会使格式更加混乱。

解决方法

在查看 Malcom's 问题后,我意识到我完全错了。我应该拆分列并添加它而不是替换它。这是我想出的解决方案

  import csv

  filename = title + ".csv"

  
  with open(p/filename,"w",encoding="utf8",newline='') as f:
    rows = response["rows"]
    writer = csv.writer(f)
    headers = ["Keys","Clicks","Impressions","CTR","Position","date","page","device","query"]
    writer.writerow(headers)
    for row in rows:
        dimensions = row["keys"]
        writer.writerow(
            [
                ",".join(row.get("keys",[])),row["clicks"],row["impressions"],row["ctr"],row["position"],dimensions[0],dimensions[1],dimensions[2],dimensions[3]
            ]
        )

我只需要将“键”设置为另一个非 变量?(可能是列表),然后在保存 csv 时将这些项目作为附加字段调用。