Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在字符串中的特定单词后查找数字(或字符)_Python_Regex_Pandas - Fatal编程技术网

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