【发布时间】:2021-08-05 05:36:47
【问题描述】:
我有下面的文本,每个信息(文本和长度)在“|”之间时间不同,只有“|”的个数是固定的。我可以检索我想要的信息(“XYZGM”)但是我们有更好的方法吗?
"@BATCH|ABCDEF|01|12|1||XYZGM|210401113439|online|ATGHDGV03|QGH83826|RevA|||"
我使用的当前代码:
text="{@BATCH|ABCDEF|01|12|1||XYZGM|210401113439|online|ATGHDGV03|QGH83826|RevA|||"
# get text from 6th position to 7th position of "|"
pos_count=0
z=0
for i in range(z,len(text)):
pos=text.find('|', z, len(text))
if pos>0:
pos_count+=1
z=pos+1
if pos_count==6:
x=pos+1
if pos_count==7:
y=pos
break
print("X: {}, Y: {}".format(x,y))
result=text[x:y]
print(result)
结果是:“XYZGM”
【问题讨论】:
-
可能是这样
^{@\S*?\|\|([^\s|]+)使用捕获组regex101.com/r/pGfpjd/1是不是一直都是双管道后的第一个值? -
为什么不使用
result = text.split('|')[6]? -
很高兴我的回答对你有用。如果您觉得我的回答有帮助,也请点赞。
标签: python-3.x regex search count