Python 在字符串中的特定单词后查找数字(或字符)
这个问题我已经被问过无数次了,但不知怎么的,我自己也找不出一个解决办法Python 在字符串中的特定单词后查找数字(或字符),python,regex,pandas,Python,Regex,Pandas,这个问题我已经被问过无数次了,但不知怎么的,我自己也找不出一个解决办法 ( PIN 700W_start_stop( STS_PROP( POS_X 1233 )( POS_Y 456 )( BIT_CNT 1 )( CNCT_ID 7071869 ))(USR_PROP( VAR 1( Var_typ -1 )(AssocCd H12 )( termLBLttt +S)( Anorm 011.1)(Amax 1.0)) 如何提取“POS_X”后面的数字?i、 e.1233 我想我已经用正
( PIN 700W_start_stop( STS_PROP( POS_X 1233 )( POS_Y 456 )( BIT_CNT 1 )( CNCT_ID 7071869 ))(USR_PROP( VAR 1( Var_typ -1 )(AssocCd H12 )( termLBLttt +S)( Anorm 011.1)(Amax 1.0))
如何提取“POS_X”后面的数字?i、 e.1233
我想我已经用正则表达式解决了这个问题,因为它看起来非常简单。但它不起作用(想想看)
这不应该在“POS_X”之后给我数字,然后在我的数据框中添加相应的列吗??“POS#X####”可能在同一行中多次出现,我只想找到第一个。如果我想对“PIN”执行同样的操作并提取“700W\u start\u stop”,该怎么办?re.search()
返回一个MatchObject
对象<代码>\d+与regexp中的第一个捕获组匹配,因此您需要使用
if x:
print(x.group(1))
else:
print("POS_X not found")
把它打印出来
整个循环应为:
import re
with open(r'C:\Users\user1\Documents\Python Scripts\test1.txt', 'r', encoding="ISO-8859-1") as txt:
for line in txt:
line = line.strip()
x = re.search(r'POS_X (\d+)', line)
if x:
print(x.group(1))
else:
print("POS_X not found in", line)
对于PIN
,您可以使用:
x = re.search(r'PIN (\w+)')
\w
匹配字母数字字符和\uu
您使用data=txt.read()
将整个文件读入数据中,并且不要对它后面的行执行任何操作。@WiktorStribiżew这是错误的吗?嗯,这没有意义。另外,缩进是错误的。@WiktorStribiżew嗯,我想要一个大字符串对象,我可以遍历它的行,但我在本例中只做了一行来尝试找出它。x.group(1)
将返回数字。re.search()
的参数应该是line
,不是txt
。我回滚了您的编辑,因为当问题与我发布的代码相同时,我的答案毫无意义。如果您想显示您尝试的内容,请将其添加到问题的末尾,不要删除原始代码。试着将打印(行)
首先查看该行实际包含的内容。显示的字符串分布在多行上。文件中是这样的,还是只有一行?
x = re.search(r'PIN (\w+)')