我有一个数据库,其中包含我的鸟舍中所有虎皮鹦鹉的记录。它还包括育种信息。我最近在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 ++背景)导入文件。
答案 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]
也会摆脱它们。