在python中,如何使用正则表达式仅记录字符串的匹配部分,以便从文件中读取数据?

尼沙格

如何打印从文本文件读取的行中与正则表达式匹配的字符串的唯一部分。我有以下代码。

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='')

但这给了我包含匹配的整行。

我尝试过的另一件事是。

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对象而不是列表的形式出现

[<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'>]

我的输入看起来像:

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 \

我希望我的答案看起来像:

[NM4 NM3 M9 M7 M5 M2]
拉克什

使用正则表达式分组 '([A-Z]{1,2}\d{1,3})'

例如:

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']

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用正则表达式提取R中字符串的不匹配部分?

如何使用正则表达式在文件中搜索匹配的子字符串并仅返回子字符串?

如何仅使用正则表达式从子字符串中获取所有正则表达式匹配项

如何使用正则表达式仅匹配每行中第一次出现的字符串

如何使用JS / jQUery正则表达式从字符串中删除不匹配的部分

正则表达式删除列数据框中字符串的特定部分python

文件中的Python正则表达式字符串匹配

匹配文件名而不是python正则表达式中的子字符串

如何使用正则表达式仅获取字符串括号中的内容?

如何使用正则表达式仅提取匹配字符串的一部分?

如何从python中的正则表达式匹配返回字符串?

如何删除所有与python中的正则表达式匹配的字符串?

如何在Java中字符串的某些部分中使用正则表达式?

如何使用正则表达式匹配字符串中的多个单词?

如何使用正则表达式匹配字符串中的模式

如何使用正则表达式匹配文本中的顺序字符串?

如何使用正则表达式匹配单引号或双引号中的字符串

在python中使用正则表达式在字符串中查找精确长度匹配

在 Unix 中替换文件中的字符串 - 替换匹配正则表达式的部分

匹配字符串中的正则表达式

如何从python中的正则表达式中的字符串列表中匹配任何字符串?

如何使用python正则表达式查找文件中的所有字符字符串

正则表达式不匹配字符串中的双引号(仅单引号)

从连续字符串中仅选择正则表达式匹配

如何正则表达式匹配和正则表达式替换php中的字符串

如何使用正则表达式提取字符串的不匹配部分

正则表达式 - 匹配搜索字符串中单词的更好部分

正则表达式匹配JavaScript中字符串的全部或初始部分

正则表达式提取匹配R中某些单词的部分字符串