gpt4 book ai didi

python - 正则表达式从在 _ 和 _ 下划线之后停止的字符串中获取数字

转载 作者:太空宇宙 更新时间:2023-11-03 14:37:15 24 4
gpt4 key购买 nike

我有几个看起来像这样的字符串:

str1 = "C:/Users/10MedicineA\20072018_medicineName_00222_01111"
str2 = "C:/Users/MedicineB\21072018_medicineName_03333_01121"

我需要提取反斜杠(应该是日期)和 medicineName 以及标识符(这是“medicineName”之后的第一个数字系列)之后的数字。

所以最终的结果应该是这样的:

['20072018','medicineName','00222']

如何获取反斜杠 \ 到下划线 _ 之后的所有内容?

我想用正则表达式来做,当然它很容易过滤 C:/Users/ 部分,因为它总是一样的,但其余部分不是这样:

final = re.findall(r'\d+\.*',str1)
['10','20072018','00222','01111']

final = re.findall(r'(?=[0-9]).*(?=\_)')

最佳答案

如果你想坚持使用正则表达式,你可以这样做:

import re

strings = ["C:/Users/10MedicineA/20072018_medicineName_00222_01111",
"C:/Users/MedicineB/21072018_medicineName_03333_01121"]

for s in strings:
r = re.search(r"(\d+)_(medicineName)_(\d+)_", str1)
if r:
print(list(r.groups()))

这给出了:

['20072018', 'medicineName', '00222']
['21072018', 'medicineName', '03333']

如果你想涵盖更一般的选项,请更改为:

"(\d+)_([^_]*)_(\d+)_"

考虑到您的字符串是路径,您还可以使用 pathlib 来完成该任务:

from pathlib import Path

s = "C:/Users/10MedicineA/20072018_medicineName_00222_01111"

last_part = Path(s).name
print(last_part.split("_")[:3])

关于python - 正则表达式从在 _ 和 _ 下划线之后停止的字符串中获取数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57021888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com