如何获取csv列的名称以避免写入“key1”:行[1],“key2”:行[2]

2024-09-28 20:15:36 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上,我希望避免,如果我的csv中有9列,则以这种低效的方式编写它们:

myArray.append({"word":row[0],"score":row[1],"sub":row[2],"emotion":row[3],"tipo_palabra":row[4],"lemma":row[5],"empresa":row[6], "entidad":row[7],"lugar":row[8],"tiempo":row[9] })

我想知道是否有任何方法可以获得该列的值并为其指定相应的值。我知道如何使用类似以下内容来处理json:

对于idx,输入enumerate(myJson.keys()):   但是,我不知道在csv的情况下,这样做的等效性是什么。在我的csv中,我有以下列:

word,score,sub,emotion,tipo_palabra,lemma,empresa, entidad,lugar,tiempo

我想从我的文件中动态地获取它们

如何避免逐个定义字段?我想让我正在构建的json键成为列的名称和对应于行的值

with open('myfile.csv', newline='') as File:  
    reader = csv.reader(File,delimiter="|")
    for row in reader:
        myArray.append({"word":row[0],"score":row[1],"sub":row[2],"emotion":row[3],"tipo_palabra":row[4],"lemma":row[5],"empresa":row[6], "entidad":row[7],"lugar":row[8],"tiempo":row[9] })
File.close()

Tags: csvreaderwordfilerowscoreemotionlemma
2条回答

您可以将csv.DictReader用于类似的

希望你的csv文件看起来像

$ cat some.csv
word|score|sub|emotion|tipo_palabra|lemma|empresa| entidad|lugar|tiempo
1|2|3|4|5|6|7|8|9|10
11|22|33|44|55|66|77|88|99|1100

那你就可以

$ cat some.py
import csv
myArray = []
with open('some.csv') as csvfile:
    reader = csv.DictReader(csvfile, delimiter='|')
    for row in reader:
       myArray.append(dict(row))

以及产量,

$ python3 some.py
[{'word': '1', 'score': '2', 'sub': '3', 'emotion': '4', 'tipo_palabra': '5', 'lemma': '6', 'empresa': '7', ' entidad': '8', 'lugar': '9', 'tiempo': '10'}, {'word': '11', 'score': '22', 'sub': '33', 'emotion': '44', 'tipo_palabra': '55', 'lemma': '66', 'empresa': '77', ' entidad': '88', 'lugar': '99', 'tiempo': '1100'}]

我个人最喜欢的是当我需要在阅读时做些什么,而不仅仅是阅读

output = []
with open(file) as input_file:
    reader = csv.reader(input_file, delimiter='|')
    header = next(reader)
    for row in reader:
        dict_row = {}
        for i,field in enumerate(header):
             #do stuff but if you want to read
             dict_row[field] = row[i]
    output += [dict_row]

相关问题 更多 >