拆分.txt文件并附加到两个单独的Python列表中

拆分.txt文件并附加到两个单独的Python列表中,python,list,append,traversal,Python,List,Append,Traversal,我有一个.txt文件,如下所示: 如何遍历文本文件的每一行,拆分逗号上的两个字符串元素,并将每个字符串元素附加到自己的列表中 我有: longSubjectNames = [] #example: "Academy for Classical Acting" abbreviations = [] #example: "ACA" with open ("/Users/it/Desktop/Classbook/classAbrevs.txt", "r") as myfile: subjectAnd

我有一个.txt文件,如下所示:

如何遍历文本文件的每一行,拆分逗号上的两个字符串元素,并将每个字符串元素附加到自己的列表中

我有:

longSubjectNames = [] #example: "Academy for Classical Acting"
abbreviations = [] #example: "ACA"

with open ("/Users/it/Desktop/Classbook/classAbrevs.txt", "r") as myfile:
subjectAndAbrevs = tuple(open("/Users/it/Desktop/Classbook/classAbrevs.txt", 'r'))

for subAbrevsLine in subjectAndAbrevs:
   subAbrevsLine.strip()
   allSubsAndAbrevs = subAbrevsLine.split(",")

这没有正确拆分字符串元素。一旦两个字符串元素被拆分,我如何将它们附加到各自的列表中

使用列表不会让您知道文件是否为每行一个以上的逗号,因此我将使用元组,如下所示:

longSubjectNames = [] #example: "Academy for Classical Acting"
abbreviations = [] #example: "ACA"

with open ("/Users/it/Desktop/Classbook/classAbrevs.txt", "r") as myfile:
    lines = myfile.readlines()
    for line in lines:
        name, abrev = line.replace("\n","").split(",")
        longSubjectNames.append(name)
        abbreviations.append(abrev)

print longSubjectNames
print abbreviations
试试这个:

longSubjectNames = [] #example: "Academy for Classical Acting"
abbreviations = [] #example: "ACA"

with open ("/Users/it/Desktop/Classbook/classAbrevs.txt", "r") as myfile:

    for line in myfile:
        allSubsAndAbrevs = line.replace(" ", "").replace("\n", "").split(",")
        longSubjectNames.append(allSubsAndAbrevs[0])
        abbreviations.append(allSubsAndAbrevs[1])

所有的答案似乎都不符合我的要求。我提出了一个可行的解决方案:

import csv 

myfile = open("/Users/it/Desktop/Classbook/classAbrevs.csv", "rU")

lines = [tuple(row) for row in csv.reader(myfile)]

longSubjectNames = [] 
abbreviations = [] 

for item in lines:
    longSubjectNames.append(item[0])
    abbreviations.append(item[1])

解释没有正确拆分字符串元素我猜第二项中仍然有尾随“\n”?另外,由于字符串是不可变的,subAbrevsLine.strip是无用的。为什么不使用csv模块进行此操作?@Snickers3192获得一个ValueError:太多的值无法用此解包。这是因为您必须有多个值comma@Snickers3192在整个.txt文件中,每行只有一个逗号。谁他妈的编辑了我问题的顶部备注lol。是的,我会使用元组而不是列表与另一个答案不同的是,如果一行中有多个逗号,您就不会知道自己有问题。变量名也使它更具可读性。我想说您对逗号的假设是错误的,我已经亲自测试了我的代码。为什么不进行测试以确定情况是否如此。这只是在文本文件中附加第一个元素,而不是在文件的每一行中循环。换句话说,longSubjectNames只是为古典戏剧添加了Academy。你在每行之间都有新行吗?不,如果你想知道的话,每行之间没有空行。你试过用上面的代码打印列表吗?它只是附加了第一行,这是我遇到的问题。