鍍金池/ 問答/Java  Python  網(wǎng)絡(luò)安全/ python中如何對正則匹配后的對象返回其索引值?

python中如何對正則匹配后的對象返回其索引值?

問題里這個表述有點(diǎn)不清楚:具體來說,A=‘原因是CPU電路板故障,需要進(jìn)行更換?!?br>B=‘CPU電路板’
import re
C = re.search(A,B)
print(C)
如何取出CPU電路板在A中的索引值呢?
//ps.用于構(gòu)建命名實(shí)體的數(shù)據(jù)集,注意到好像都是構(gòu)建為以下這種形式的,不知道又沒有走入誤區(qū)。

原 O
因 O
是 O
C B-PART
P I-PART
U I-PART
電 I-PART
路 I-PART
板 I-PART
故 O
障 O
, O
需 O
要 O
進(jìn) O
行 O
更 O
換 O
。 O

回答
編輯回答
命多硬
A= '原因是CPU電路板故障,需要進(jìn)行更換。'
B='CPU電路板'
import re
C = re.search(B, A)
print('索引位置為:', C.span()[0], '-', C.span()[1])
print('索引位置為:', A.find(B), '-',A.find(B) + len(B))
print('索引位置為:', A.index(B), '-',A.index(B) + len(B))

三種方法,展示給你。
修正一下錯誤。

更精進(jìn)的內(nèi)容


A= '原因是CPU電路板故障,需要CPU電路板進(jìn)行更換。'
B='CPU電路板'
import re
print((['{} - {}'.format(m.start(), m.start()+len(B)) for m in re.finditer(B, A)]))
print([(m.start(), m.start()+len(B)) for m in re.finditer(B, A)])

繼續(xù)更進(jìn)一步


>>> A= '原因是CPU電路板故障,部分電子元件受損,需要CPU電路板進(jìn)行更換,。'
>>> B='電路板|CPU電路板|電子元件'
>>> import re
>>> print([(m.group(), m.span()) for m in re.finditer(B, A)])
[('CPU電路板', (3, 9)), ('電子元件', (14, 18)), ('CPU電路板', (23, 29))]
2018年3月24日 00:40
編輯回答
葬憶
C = re.search(B, A)
print(C.start())

不用正則的話,可以直接使用find

A.find(B)
2017年2月26日 12:39