[英]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.