簡體   English   中英

在列表中歸檔,然后拆分列表中的每個術語,python

[英]File in a list and then split every term in the list, 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

但是我要打印--- A

我認為您需要以下內容:

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是一個列表列表,但是我認為您想要一個簡單的字符串列表。

for r in resid_list for r in resid_list[0]更改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']

給你你想要的。

可以使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM