【发布时间】:2020-09-28 20:28:35
【问题描述】:
问题陈述: 尝试将字符串类型的变量值作为一行的每一行打印到 CSV 文件中
我尝试了什么:
import requests
import json
import pandas as pd
import sys
import csv
df = pd.read_table('c:\csv\input1.csv', engine='python', sep="\s*,\s*", skipinitialspace=True, usecols=[0, 1], header='infer')
count=0
print(','.join(df.columns))
for index, row in df.iterrows():
headers = {
'X-Requested-By': 'cli',
'Accept': 'application/json',
'Content-Type': 'application/json',
}
params = (
('query', row["Private Ip"]),
('range', '86400'),
('limit', '100'),
('sort', 'timestamp:desc'),
('pretty', 'true'),
)
response = requests.get('http://xxx.xx.xxx.xxx:9000/api/search/universal/relative', headers=headers, params=params,
auth=('xxxxxxx', 'xxxxxxxx'))
text = response.text
pretty_json = json.loads(text)
if pretty_json.get('messages'):
output = (row['Account Name'] + ',' + row['Private Ip'] + ',' +'Yes')
with open('c:\csv\pdftable.csv', 'wt') as csvfile:
writer = csv.writer(csvfile, delimiter=',')
for i in output:
writer.writerow([i])
print(row['Account Name'] + ',' + row['Private Ip'] + ',' +'Yes')
else:
print(row['Account Name'] + ',' + row['Private Ip']+ ',' + 'No')
count+=1
输入: 我的 CSV:
Account Name,Hosts
ABCD,XX.XXX.XX.XX
ABCDE,XX.XX.XXX.XX
ABCDEF,XX.XX.XXX.XXX
ABCDEFG,XX.XXX.XX.XX
输出到控制台时:(在终端打印就可以了)
Account Name,Hosts
ABCD,XX.XXX.XX.XX,Yes
ABCDE,XX.XX.XXX.XX,Yes
ABCDEF,XX.XX.XXX.XXX,Yes
ABCDEFG,XX.XXX.XX.XX,Yes
输出到 CSV 时的问题:
CSV 中的预期输出
Account Name,Hosts
ABCD,XX.XXX.XX.XX,Yes
ABCDE,XX.XX.XXX.XX,Yes
ABCDEF,XX.XX.XXX.XXX,Yes
ABCDEFG,XX.XXX.XX.XX,Yes
进入 CSV 的实际输出:
A
B
C
D
-
X
.
X
.
x
.
X
我阅读了一些文章,其中 python 将字符串视为一个序列,它将迭代所有字符,我想这就是发生的情况,我尝试了一些其他建议,将 writer.row([data]] 作为列表,但仍然以 CSV 格式输出。
【问题讨论】:
标签: python for-loop variables printing