我有以下字符串,而首字母可以不同,有时也可以是两个,有时是三个或四个。
PR191030.213101.ABD
我想提取191030
并将其转换为有效日期。
filename_without_ending.split(".")[0][-6:]
PZA191030_392001_USB
有时候看起来像他的
此解决方案无效,因为这有时可能会有所不同。唯一的REAL模式实际上是前六个数字。
我该怎么做?
谢谢!
答案 0 :(得分:3)
您可以这样做:
a = 'PR191030.213101.ABD'
int(''.join([c for c in a if c.isdigit()][:6]))
输出:
191030
答案 1 :(得分:3)
您可以使用捕获组的模式获取前6位数字
^[A-Z]{2,4}(\d{6})\.
^
字符串的开头[A-Z]{2,4}
匹配2、3或4个大写字符(
捕获组1
\d{6}
匹配6位数字)\.
关闭组并匹配尾随点例如
import re
regex = r"^[A-Z]{2,4}(\d{6})\."
test_str = "PR191030.213101.ABD"
matches = re.search(regex, test_str)
if matches:
print(matches.group(1))
输出
191030
答案 2 :(得分:1)
这也可以通过以下方式完成:
filename_without_ending.split(".")[0][2::]
这会将字符串从第3个字母分割到结尾。
答案 3 :(得分:0)
重新导入
str =“ PR191030.213101.ABD”
print(re.findall(r“ \ d +”,str)[0])
print(re.search(r“ \ d +”,str).group())