首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python --如何在CSV输出中添加分隔符和删除换行符?

Python --如何在CSV输出中添加分隔符和删除换行符?
EN

Stack Overflow用户
提问于 2020-08-20 03:33:05
回答 1查看 487关注 0票数 0

我是第一次这样做,到目前为止,我已经设置了一个简单的脚本来从API中获取2列数据。

数据通过,我可以通过print命令看到它。

现在,我试图将它写到CSV,并设置下面的代码来创建文件,但我不知道如何:

  1. 删除每个数据行之间的空行
  2. 向数据添加分隔符,如果IP之类的值为空,则向数据添加分隔符以“
  3. ”,然后只显示"

“。

我搜索并尝试了各种各样的例子,但只是得到错误。

我成功地编写CSV的代码片段是

代码语言:javascript
运行
复制
import requests
import csv
import json

# Make an API call and store response
url = 'https://api-url-goes-here.com'
filename = "test.csv"

headers = {
    'accept': 'application/json',
}

r = requests.get(url, headers=headers, auth=('User','PWD'))
print(f"Status code: {r.status_code}")

#Store API response in a variable
response_dict = r.json()

#Open a File for Writing
f = csv.writer(open(filename, "w", encoding='utf8'))

# Write CSV Header
f.writerow(["Computer_Name", "IP_Addresses"])

for computer in response_dict["advanced_computer_search"]["computers"]:
    f.writerow([computer["Computer_Name"],computer["IP_Addresses"]])

CSV输出如下所示:

Computer_Name,IP_Addresses

HYDM002543514,

HYDM002543513,10.93.96.144 002543513 10.93.96.144- AirPort - en1

gpd0 002544581,192.168.1.8- AirPort - en1 / 10.93.224.177 - GlobalProtect -gpd0

HYDM002544580,10.93.80.101 002544580,10.93.80.101-以太网- en0

gpd0 002543515 192.168.0.6- AirPort - en0 / 10.91.224.58 - GlobalProtect -gpd0

CHAM002369458,10.209.5.3 002369458 10.209.5.3-以太网- en0

AirPort - en0 / 10.125.91.23 - GlobalProtect - gpd0

MacBook-Pro,

我试着添加

代码语言:javascript
运行
复制
csv.writer(f, delimiter =' ',quotechar =',',quoting=csv.QUOTE_MINIMAL)

在f= csv.writer行之后,但是这会产生一个错误:

TypeError:参数1必须有一个“写”方法

我确信这很简单,但无法在我的代码中找到实现的正确解决方案。任何帮助都是非常感谢的。

另外,文件会自动关闭吗?一些示例建议使用类似f.close()之类的东西,但这会导致错误。我需要它吗?该文件似乎创建良好,就像现在一样。

EN

Stack Overflow用户

回答已采纳

发布于 2020-08-20 05:02:05

我建议您使用熊猫包来编写.csv文件,这是一个用于数据分析的最常用的包。

对于你的问题:

代码语言:javascript
运行
复制
import requests
import csv
import json
import pandas

# Make an API call and store response
url = 'https://api-url-goes-here.com'
filename = "test.csv"

headers = {
    'accept': 'application/json',
}

r = requests.get(url, headers=headers, auth=('User','PWD'))
print(f"Status code: {r.status_code}")

#Store API response in a variable
response_dict = r.json()

#collect data to build pandas.DataFrame
data = []
for computer in response_dict["advanced_computer_search"]["computers"]:
    # filter blank line
    if computer["Computer_Name"] or computer["IP_Addresses"]:
        data.append({"Computer_Name":computer["Computer_Name"],"IP_Addresses":computer["IP_Addresses"]})

pandas.DataFrame(data=data).to_csv(filename, index=False)

如果要使用" "分隔值,可以在最后一行中设置sep=" "输出.csv文件。但是,我建议使用,作为分隔符,因为它是一个通用的标准。此外,还可以为DataFrame.to_csv()方法设置更多的信任,您可以检查官方文档。https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html

正如你在评论中所说的,熊猫不是一个标准的蟒蛇包。您只需打开一个文件并将行写入该文件,就可以手动构建行。例如:

代码语言:javascript
运行
复制
import requests
import csv
import json

# Make an API call and store response
url = 'https://api-url-goes-here.com'
filename = "test.csv"

headers = {
    'accept': 'application/json',
}

r = requests.get(url, headers=headers, auth=('User','PWD'))
print(f"Status code: {r.status_code}")

#Store API response in a variable
response_dict = r.json()

r = requests.get(url, headers=headers, auth=('User','PWD'))
print(f"Status code: {r.status_code}")

#Store API response in a variable
response_dict = r.json()

#Open a File for Writing
f = csv.writer(open(filename, "w", encoding='utf8'))

with open(filename, mode='w') as f:
    # Write CSV Header
    f.write("Computer_Name,"+"IP_Addresses"+"\n")
    for computer in response_dict["advanced_computer_search"]["computers"]:
        # filter blank line
        if computer["Computer_Name"] or computer["IP_Addresses"]:
            f.write("\""+computer["Computer_Name"]+"\","+"\""+computer["IP_Addresses"]+"\"\n")

请注意,“通过在每个循环后追加\". \n来更改新行来生成\n

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63497897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档