使用re.findall查找字符串,但要从文件中存储int值

时间:2018-06-11 07:35:29

标签: python

我有一个文件log.txt该文件有这些行,如下所示

Sett S=1
Stage Tmsec;
NP=81
NC1=3

我有一个python代码,只能以列表的形式获取Sett S,NP,NC1的值。

我提出了一个名为re.findall的术语,但我能够使用re.findall获取确切的值,但不能将值存储为int而不是字符串。

当我尝试将列表转换为整数列表时,会抛出一个错误,表示' str'错误。

到目前为止,无法提出解决方案。

2 个答案:

答案 0 :(得分:1)

使用正则表达式

<强>实施例

import re
data = """Sett S=1
Stage Tmsec;
NP=81
NC1=3
Sett S=2
Stage Tmsec;
NP=82
NC1=4
Sett S=3
Stage Tmsec;
NP=83
NC1=5"""


Sett_S = re.findall("Sett S=(.*)", data)
NP = re.findall("NP=(.*)", data)
NC1 = re.findall("NC1=(.*)", data)

for i in zip( Sett_S, NP, NC1 ):
    print(i) 

<强>输出:

('1', '81', '3')
('2', '82', '4')
('3', '83', '5')

答案 1 :(得分:0)

In [1]: s = '''Sett S=1
   ...: Stage Tmsec;
   ...: NP=81
   ...: NC1=3'''

In [2]: import re
In [8]: m = re.search(r'S=(\d+).*NP=(\d+).*NC1=(\d+)', s, flags=re.S)

In [9]: m.groups()
Out[9]: ('1', '81', '3')

In [10]: m.group(1)
Out[10]: '1'

In [11]: m.group(2)
Out[11]: '81'

In [12]: m.group(3)
Out[12]: '3'