Python:为什么列表导入要使用引号,如何避免这种情况/去掉引号?

2024-10-01 13:43:30 发布

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

很简单的问题,但我有足够长的时间去问。代码如下:

f4 = open("genomekey2.txt", 'rb')
keyline = f4.readline()
keygenomes = []
for keyline in f4:
   keygenomes.append(keyline[:-1])

genomekey2.txt文件格式如下所示

^{pr2}$

问题是当我打印genomekey列表时,它包含了我想要的所有条目,但是在列表中找到的每个[]都用引号括起来。我想去掉引号,这样我就可以把它与另一个列表进行比较,但到目前为止还没有找到方法。我试过。。。在

for a in keygenomes:
    a.replace('"', '')

但那似乎没用。我更喜欢一个根本不加引号的解决方案。它们到底是用来做什么的?代码的哪一部分(.append,.readline())负责添加它们?这是一个初学者的问题,但你们看起来很不错。在

编辑:我最终想把它和一个这样格式化的列表进行比较

[['Arthrospira maxima CS-328',['proc chlorococus marinus str.MIT 9301'],['Synechococcus sp.CC9605'],['Synechococcus sp.CB0205',['proc chlorocococus marinus str.MIT 9313',['Synechococcus sp.JA-3-3Ab',['Trichodesmium erythraeum IMS101',['Synechococcus sp.PCC 7335'],['Trichodesmium erythraeum IMS101'。。。在

编辑:所以我想我有一些事情需要解决,谢谢大家的帮助!这些引语干扰了列表的比较,所以我把它们也添加到第一个列表中,尽管我认为这只是模仿输入字符串的列表(我现在认为我理解了其中的区别),但它似乎起作用了

f4 = open("genomekey2.txt", 'rb')
keyline = f4.readline()
keygenomes = []
for keyline in f4:
    keygenomes.append(keyline[:-1])

specieslist = " ".join(["%s" % el for el in specieslist])

nonconservedlist = [i for i in keygenomes if i not in specieslist]

编辑:是的,上面的方法可行,但我在这里找到了一个更优雅的解决方案(http://forums.devshed.com/python-programming-11/convert-string-to-list-71857.html)在更好地理解问题之后,感谢你们的帮助,如下所示:

for keyline in f4:
    keyline = eval(keyline)
    keygenomes.append(keyline)

谢谢!在


Tags: intxt编辑列表forreadlinesp引号
3条回答

一个快速而肮脏的解决方案是跳过行的前两个字符和最后两个字符

f4 = open("genomekey2.txt", 'rb')
keyline = f4.readline()
keygenomes = []
for keyline in f4:
   # CHANGE HERE
   keygenomes.append(keyline[2:-2])

否则使用regexp

^{pr2}$

a.replace(...)返回修改后的字符串,它不修改a。在

因此,您需要实际替换数组中的条目,或者在将它们放入数组之前修复它们。在

keygenomes = [ a.replace('"', '') for a in keygenomes ]

编辑:

我想我没有足够仔细地阅读这个问题,当你打印一个字符串时,"就会出现,它不是字符串本身的一部分。在

根据您要将列表与之比较的内容,您似乎想要的是列表列表,而不是字符串列表。。。。也许是这个?在

f4 = open("genomekey2.txt", 'rb')
keygenomes = []
for keyline in f4.readlines():
    if keyline:
        keygenomes.append(eval(keyline.strip()))

您将遇到以下行的问题:

^{pr2}$

引用不正确,这将破坏评估。有没有可能混用引号?像这样。。。在

["Synechococcus sp. JA-2-3B'a(2-13)"]

相关问题 更多 >