我有像下面这样的Python字符串
"1234_4534_41247612_2462184_2131_GHI.xlsx"
"1234_4534__sfhaksj_DHJKhd_hJD_41247612_2462184_2131_PQRST.GHI.xlsx"
"12JSAF34_45aAF34__sfhaksj_DHJKhd_hJD_41247612_2f462184_2131_JKLMN.OPQ.xlsx"
"1234_4534__sfhaksj_DHJKhd_hJD_41FA247612_2462184_2131_WXY.TUV.xlsx"
我想做下面的事情
a) 提取出现在第一个点之前和之后的字符
b) 我想要的关键词总是在最后一个之后找到_
symbol
例如:如果您查看第二个输入字符串,我只想得到PQRST.GHI
作为输出。是在最后之后_
以及1号之前.
我们也在第 1 个之后得到关键字.
所以,我尝试了以下方法
for s in strings:
after_part = (s.split('.')[1])
before_part = (s.split('.')[0])
before_part = qnd_part.split('_')[-1]
expected_keyword = before_part + "." + after_part
print(expected_keyword)
尽管这可行,但这绝对不是编写正则表达式的好方法和优雅方法。
还有其他更好的写法吗?
我希望我的输出如下所示。正如你所看到的,我们得到了 1st 之前和之后的关键词dot
特点
GHI
PQRST.GHI
JKLMN.OPQ
WXY.TUV
Try (regex101 https://regex101.com/r/lB6c2L/1):
import re
strings = [
"1234_4534_41247612_2462184_2131_ABCDEF.GHI.xlsx",
"1234_4534__sfhaksj_DHJKhd_hJD_41247612_2462184_2131_PQRST.GHI.xlsx",
"12JSAF34_45aAF34__sfhaksj_DHJKhd_hJD_41247612_2f462184_2131_JKLMN.OPQ.xlsx",
"1234_4534__sfhaksj_DHJKhd_hJD_41FA247612_2462184_2131_WXY.TUV.xlsx",
]
pat = re.compile(r"[^.]+_([^.]+\.[^.]+)")
for s in strings:
print(pat.search(s).group(1))
Prints:
ABCDEF.GHI
PQRST.GHI
JKLMN.OPQ
WXY.TUV
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)