我从多个REST端点获取csv中的数据,尝试将列标题添加到数据中,并将数据中的分隔符从分号(;)更改为逗号(,),以便它们可以通过以下方式正确格式化: Excel中。
注意:下面代码中的x是链接URI列表,省略号替换了用于发现和拉取链接的代码。
from bs4 import BeautifulSoup
import openpyxl
from html.parser import HTMLParser
from urllib.request import urlopen
from urllib import parse
import logging
import csv
...
...
for link in links:
linkContent = urlopen(link)
htmlBytes = linkContent.read()
htmlString = htmlBytes.decode("utf-8")
targetFile = open(str(x[link]) + '.csv', 'w')
targetFile.write('Date;StartTime;EndTime;Environment;Domain;DeployID;Module;Status;BuildVersion;DeployType;DeployStart\n')
targetFile.write(htmlString)
targetFile.close()
for file in x:
with open(str(x[file]) + '.csv', newline='') as csvFile:
reader = csv.reader(csvFile,delimiter=";")
data = [line for line in csvFile]
datalen= len(data)
for i in range(datalen):
data[i] = data[i].replace(";", ",")
data[i] = data[i].replace(" ","")
with open(str(x[file]) + '.csv', 'w') as csvFile:
w=csv.writer(csvFile,delimiter=',',quoting=csv.QUOTE_NONE,escapechar=' ')
w.writerows([data])
不幸的是,这会在第一行之后的每一行之前产生一个不必要的逗号,我不确定原因。
即
Date,StartTime,EndTime ...
,2016-07-12,03:11,03:21,......
这有excel显示第一行的所有空白,并开始显示之后的行中的数据。基本上将所有数据向右移动一行。
在尝试正确解析代码时,代码中可能有一些不必要的参数和/或参数。
提前致谢。
答案 0 :(得分:1)
手动将,
添加到文件会导致列对齐问题,因为手动插入的,
将与csv.writer
作为分隔符插入的;
冲突。
将分隔符从,
更改为replace(";", ",")
不需要额外的csv.reader
。只需更改writer
和for file in x:
with open(str(x[file]) + '.csv', newline='') as csvFile:
reader = csv.reader(csvFile, delimiter=";")
data = [row for row in reader]
# ^^^^^^ use reader not csvFile
with open(str(x[file]) + '.csv', 'w') as csvFile:
w=csv.writer(csvFile, delimiter=',', quoting=csv.QUOTE_NONE,escapechar=' ')
w.writerows(data)
对象中的分隔符即可。
以下内容应该符合您的要求:
{{1}}