Я «псевдо» создаю файл .bib, читая файл csv, а затем следую за этим structure записывая все, включая символы новой строки. Это утомительный процесс, но это необработанная форма при преобразовании csv в .bib в python.Python Pandas метод iterrows
Я использую Pandas для чтения csv и записи строки за строкой (и поскольку у него есть специальные символы, я использую latin1 encoder), но у меня возникает огромная проблема: он читает только первую строку. Из официального documentation я использую свой метод на чтение построчно, который только дает мне первую строку (пример 1):
row = next(df.iterrows())[1]
Но если я удалю следующий() и [1] он дает мне содержимое каждого столбца сосредоточено в одном поле (пример 2).
Почему это происходит? Почему использование метода в документах не проходит через все строки красиво? Каким будет решение, например, 1, но для всех строк?
Мой код:
import csv
import pandas
import bibtexparser
import codecs
colnames = ['AUTORES', 'TITULO', 'OUTROS', 'DATA','NOMEREVISTA','LOCAL','VOL','NUM','PAG','PAG2','ISBN','ISSN','ISSN2','ERC','IF','DOI','CODEN','WOS','SCOPUS','URL','CODIGO BIBLIOGRAFICO','INDEXAÇÕES',
'EXTRAINFO','TESTE']
data = pandas.read_csv('test1.csv', names=colnames, delimiter =r";", encoding='latin1')#, nrows=1
df = pandas.DataFrame(data=data)
with codecs.open('test1.txt', 'w', encoding='latin1') as fh:
fh.write('@Book{Arp, ')
fh.write('\n')
rl = data.iterrows()
for i in rl:
ix = str(i)
fh.write(' Title = {')
fh.write(ix)
fh.write('}')
fh.write('\n')
PS: Я новичок в Python и программирования, я знаю, что этот код имеет недостатки, и это не самый эффективный способ преобразовать CSV в нагрудник.
Пример 1: HTTP: //pastebin.com/HaZUgKpe Пример 2: HTTP: //pastebin.com/cScWse2G –
'iterrows' дает вам' (index, row) 'кортеж на каждой итерации. Лучший способ использовать его, как правило, делать 'для ix, row в data.iterrows():', не используя 'next()'. – Marius