csv 为什么索引位置输出来自其他索引的数据?

puruo6ea  于 2022-12-15  发布在  其他
关注(0)|答案(1)|浏览(150)

我试图从名为样式1和样式2的数据集中的两个类别创建一个值列表。然而,当我输入代码时,它创建了一个组合样式1和样式2中的数据的列表。奇怪的是,它从我不知道的地方获取这些流行语?这是我正在使用的数据集,但我在其中找不到流行语:https://www.kaggle.com/datasets/jessicali9530/animal-crossing-new-horizons-nookplaza-dataset?select=villagers.csv
下面是我的代码:

style = []
for i in lines[1:]:
  vals = i.strip().split(',')
  style.append(vals[13])
  style.append(vals[14])
print(style)

下面是正在打印的内容的一个小示例:

[' let it go. Then chase it down. What were you thinking?"', 'Active', 'Cool', 'Cool', 'Active', 'Simple', 'Simple', 'Elegant', 'Active', 'Active', 'Simple', 'Simple', 'Cute', 'Cute', 'Gorgeous', 'Elegant', ' water', ' and shelter!"',

正如你所看到的,在风格1和风格2的值中混合了这些随机的流行语,不知道为什么或从哪里来的。

llmtgqce

llmtgqce1#

有些行必须在csv字段内包含逗号。通常在csv处理中,这是通过在每个字段周围加上双引号来处理的,如下所示:

Hero,Catchphrase,Sidekick
"Lone Ranger","Hi Ho, Silver!","Tonto"
"Superman","Up, Up, and Away!","Lois Lane"

你可以看到在流行语列中有逗号,因为它们在引号中,标准的csv处理可以正确地处理它。
但是,看起来您没有使用标准的csv处理。您只是将每一行csv数据视为一个标准字符串。如果您对这个示例数据执行相同的操作,第一行将拆分为四个字段,第二行拆分为五个字段。
下面是正确方法的一个简短示例:

import csv
with open("myfile.csv") as f:
    reader = csv.reader(f)
    for row in reader:
        # row[13] and row[14] are handled correctly

相关问题