我正在尝试提取文件名的特定部分,该部分可以具有不同数量的“ _”。我以前曾使用partition / rpartition删除下划线之前和之后的所有内容,但我没有考虑使用不同的下划线编号的可能性。
该代码的目的是提取下划线之间的特定字符。
filename = os.path.basename(files).partition('_')[2].rpartition('_')[0].rpartition('_')[0].rpartition('_')[0]
以上是我当前的代码。该文件的典型名称如下:
P0_G12_190325184517_t20190325_5
或者也可以有
P0_G12_190325184517_5
据我了解,当前代码的分区需要与第一个文件的文件下划线的数量匹配,但是相同的代码显然不适用于第二个文件。
我要提取
G12
这部分也可以只是两个字符,例如G1,因此上述文件名类型中的两个到三个字符。
答案 0 :(得分:2)
您可以使用:
os.path.basename(files).split('_')[1]
答案 1 :(得分:1)
您可以使用split
创建包含单独部分的列表,如下所示:
files.split('_')
或者您可以使用正则表达式:
https://regex101.com/r/jiUNLV/1
并这样做:
import re
pattern = r'.*_(\w{2,3})_\d+.*'
match = re.match(pattern, files)
if match:
print(match.group(1))