【发布时间】:2019-02-27 20:01:57
【问题描述】:
我已经看到这个问题的变体被问了一百万次,但不知何故无法为自己找到解决方案。
( 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”后面的数字?即 1233 我以为我已经使用正则表达式弄清楚了,因为它看起来非常简单。但它不起作用(去图)。
import re
import pandas as pd
df_pin = pd.DataFrame(columns =
['ID','Pos_x','Pos_y','conn_ID','Association_Code','Anorm','Amax'])
with open(r'C:\Users\user1\Documents\Python Scripts\test1.txt', 'r',
encoding="ISO-8859-1") as txt:
for line in txt:
data = txt.read()
line = line.strip()
x = re.search(r'POS_X (\d+)', data)
df_pin = df_pin.append({'POS_X' : x, ignore_index = True}
print (x)
这不应该给我'POS_X'之后的数字,然后将它附加到我的数据框中的相应列吗?同一行可能出现多次'POS_X ###',我只想找到第一个。如果我想对“PIN”执行相同的操作并提取“700W_start_stop”怎么办?
【问题讨论】:
-
你用
data = txt.read()将整个文件读入data,并且在它之后不要对你的line做任何事情。 -
@WiktorStribiżew 这是不正确的吗?
-
嗯,这没有任何意义。另外,缩进是错误的。
-
-
x.group(1)将返回号码。