#python-3.x #csv
Вопрос:
У меня есть выровненный CSV
symbol,latestPrice,changePercent,marketCap,peRatio,week52High,week52Low,ytdChange,companyName
SENS,2.91,0.41951,1245690090,,5.56,0.3497,2.7574315416379904,Senseonics Holdings Inc
RESN,4.07,0.25617,245922111,,8.33,2.09,0.7920190566037737,Resonant Inc
DOCU,233.24,0.19764,45378268496,-178.05,290.23,135.42,0.24685277552856497,DocuSign Inc
JOAN,16.92,0.18987,685586116,,17.01,9.75,0.5710944897959185,JOANN Inc
AMCX,66.8,0.17668,2052849170,12.53,83.63,20.16,1.0441667207156833,AMC Networks Inc - Class A
и попробуйте переформатировать их и сохранить в новом формате csv
with open(out_file, 'w') as csvfile:
writer = csv.writer(csvfile)
for row in csv_f:
print('{:<15} {:<15} {:<20} {:<25} '.format(*row))
writer.writerows('{:<15} {:<15} {:<20} {:<25} '.format(*row))
на отпечатке видно, что я пытаюсь сделать
companyName latestPrice ... week52Low ytdChange
symbol ...
SENS Senseonics Holdings Inc 2.91 ... 0.3497 2.757432
RESN Resonant Inc 4.07 ... 2.0900 0.792019
DOCU DocuSign Inc 233.24 ... 135.4200 0.246853
JOAN JOANN Inc 16.92 ... 9.7500 0.571094
AMCX AMC Networks Inc - Class A 66.80 ... 20.1600 1.044167
Но форматирование CSV становится таким. вообще не читается
s
y
m
b
o
l
l
a
t
e
s
t
P
r
i
c
Кто-нибудь может помочь? Спасибо!
Ответ №1:
writer.writerows()
принимает коллекцию строк в качестве первого параметра. Поскольку вы передаете строку (набор символов), каждый символ строки обрабатывается как отдельная строка. Используйте writer.writerow()
вместо этого.
writer.writerow()
, с другой стороны, требуется набор столбцов. Обязательно передайте ему список столбцов, а не одну строку, как в writer.writerow([your_string])
.
Комментарии:
1. Спасибо. Использовал writer.writerow() здесь,и выходной csv выглядит лучше, но все равно выглядит очень странно.
s,y,m,b,o,l,
вместо ожидаемого формата в печати, который естьsymbol
. Не могли бы вы просветить меня?