首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中,如何使用regex对我们从文件中读取的数据只记录字符串中匹配的部分?

在python中,如何使用regex对我们从文件中读取的数据只记录字符串中匹配的部分?
EN

Stack Overflow用户
提问于 2019-07-02 09:58:03
回答 1查看 41关注 0票数 1

如何从从文本文件读取的行中打印与regex匹配的字符串的唯一部分。我有下面的代码。

代码语言:javascript
复制
filename = "C:/Users/Desktop/netlist"
pattern = re.compile('^[A-Z]{1,2}\d{1,3} ')
with open(filename, "rt") as myfile:
    for line in myfile:
        if pattern.search(line) != None:
            print(line, end='')

但这给了我一整排的火柴。

我试过的另一件事是。

代码语言:javascript
复制
k = []
filename = "C:/Users/Desktop/netlist"
pattern = re.compile('^[A-Z]{1,2}\d{1,3}')
with open(filename, "rt") as myfile:
   for line in myfile:
       if pattern.match(line) != None:
        k.append(pattern.search(line))

但这是作为re.Match对象而不是列表出现的。

代码语言:javascript
复制
[<re.Match object; span=(0, 3), match='NM4'>,
<re.Match object; span=(0, 3), match='NM3'>,
<re.Match object; span=(0, 2), match='M9'>,
<re.Match object; span=(0, 2), match='M7'>,
<re.Match object; span=(0, 2), match='M5'>,
<re.Match object; span=(0, 2), match='M2'>]

我的输入看起来是:

代码语言:javascript
复制
NM4 (net19 net19 0 0) nmos1 w=(5.65u) l=410n as=3.39p ad=3.39p ps=12.5u \
NM3 (net28 net19 0 0) nmos1 w=(5.65u) l=410n as=3.39p ad=3.39p ps=12.5u \
M9 (vout\+ net19 0 0) nmos1 w=(12.71u) l=310n as=7.626p ad=7.626p \
M7 (vout\- net19 0 0) nmos1 w=(12.71u) l=310n as=7.626p ad=7.626p \
M5 (net7 net19 0 0) nmos1 w=(2u) l=180n as=1.2p ad=1.2p ps=5.2u pd=5.2u \
M2 (net8 Vin\- net7 0) nmos1 w=(28.25u) l=410n as=16.95p ad=16.95p \

我期待着我的回答是:

代码语言:javascript
复制
[NM4 NM3 M9 M7 M5 M2]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-02 10:05:37

使用regex分组'([A-Z]{1,2}\d{1,3})'

Ex:

代码语言:javascript
复制
k = []
filename = "C:/Users/Desktop/netlist"
pattern = re.compile('([A-Z]{1,2}\d{1,3})')
with open(filename, "rt") as myfile:
    for line in myfile:
        m = pattern.match(line)
        if m:                       #Check if data. 
            k.append(m.group(1))    #Fetch result.

print(k) #['NM4', 'NM3', 'M9', 'M7', 'M5', 'M2']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56849882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档