文件,然后拆分列表中的每个术语,python

2024-04-27 03:08:39 发布

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

我有一个文件,上面写着:

IA45,TA43,WB58,AB71 ... etc

我想把这些词转换成一个列表,比如:

["IA45","TA43","WB58","AB71" .....]

然后,我想用这个列表把单词一个接一个地拆分,把第一个字母、第二个字母和数字作为分隔变量。 我有:

with open("IRL.txt", "r") as f:
    resid_list = [x.split(',') for x in f.readlines()]
    for r in resid_list:
        chain = list(r)[1]
        print chain
        res = list(r)[0]
        print res
        num = list(r)[2:]
        num1 = "".join(num)
        res_num = res+num1
        print res_num+" "+chain

问题在for循环中。当我打印“chain”时,它只给了我第二个单词,没有其他的--->;TA43

但我想印一张纸


Tags: inchain列表for字母res单词num
3条回答

for r in resid_list更改为for r in resid_list[0]

因为您使用的是列表理解,所以您的参数如下所示:

In [9]: resid_list
Out[9]: [['IA45', 'TA43', 'WB58', 'AB71']]

即列表列表

In [10]: resid_list[0]
Out[10]: ['IA45', 'TA43', 'WB58', 'AB71']

给你想要的。你知道吗

我想你想要的是如下的东西:

with open("IRL.txt", "r") as f:
    resid_list = [x for line in f.readlines() for x in line.split(',')]
    for r in resid_list:
        first = r[0]
        second = r[1]
        num = r[2:]
        # do something with those variables

在您当前的版本中,resid_list是一个列表列表,但我认为您需要一个简单的字符串列表。你知道吗

可以使用re.findall并获取与生成器表达式的第一个匹配

import re

line = 'IA45,TA43,WB58,AB71'
for fst, snd, nums in (re.findall('(.)(.)(\d+)', el)[0] for el in line.split(',')):
    print fst, snd, nums

I A 45
T A 43
W B 58
A B 71

根据您的线路的格式/可预测性,您甚至可能只需要:

for fst, snd, nums in re.findall('(.)(.)(\d+)', line):
    print fst, snd, nums

相关问题 更多 >