在python中将文本文件导入到2d列表会添加单引号

时间:2015-06-28 01:47:39

标签: python file multidimensional-array import

我有一个数据库,其中包含我的鸟舍中所有虎皮鹦鹉的记录。它还包括育种信息。我最近在python中创建了一个脚本,打印出任何特定鸟类的家谱。但是,我通过在脚本文件中创建一个2D列表来完成此操作。这意味着我对数据库所做的任何更改都不会反映在程序中。为了改善这一点,我已将数据导出到txt文件,希望将该文件作为2D列表导入我的脚本。

文本文件表示以逗号分隔的数据,其中第一列是鸟的名字,第二列是其母亲,第三列是其父亲。例如:

"Myriad","Ruby","Indiana"
"Vanadium","Peeper","Jeckyll"
"Kevin","Vanadium","Manganese"

我已经阅读了很多关于如何执行此操作的解释,并且我正在使用该代码:

with open("BudgieStock.txt") as textFile:
    birdList = [line.split() for line in textFile]

但是,如果我然后打印数组,它会在每个列表周围添加额外的单引号:

[[' "Myriad","Ruby","Indiana" '], [' "Vanadium","Peeper","Jeckyll" '], [' "Kevin","Vanadium","Manganese" ']]

这会阻止我的程序运行。我到处寻找,但无法找到解释为什么会发生这种情况或如何阻止它的原因。

我想要的只是:

[["Myriad","Ruby","Indiana"], ["Vanadium","Peeper","Jeckyll"], ["Kevin","Vanadium","Manganese"]]

当我将列表硬编码到脚本文件中时,该程序运行良好。我尝试使用以下方法删除单引号:

[t.replace("'", "") for t in birdList]

但是给出了错误,"'列表'对象没有属性'替换'"。

如果有人能解释为什么会发生这种情况以及如何解决这个问题,我将非常感激。这是我第一次使用python(C ++背景)导入文件。

1 个答案:

答案 0 :(得分:1)

line.split()按空格分割。你想用逗号分开。

with open("BudgieStock.txt") as textFile:
    birdList = [line.split(',') for line in textFile]

此外,您还需要摆脱无关的引号。我建议将它们完全从文件中删除,但

with open("BudgieStock.txt") as textFile:
    birdList = [[i.strip("\"") for i in line.split(',')] for line in textFile]

也会摆脱它们。