使用Python提取部分文件名

时间:2018-08-31 15:22:13

标签: python regex

我正在尝试使用Python提取文件的特定部分。文件名各不相同,因此我无法指定从何处开始使用特定字符串。

文件名如下:

class createTable { public static void main (String args []){ int array[] = {2,13,15,67,87,34,66,23,11,93}; printTable (array); } static void printTable (int[] array){ System.out.println ("Key\tValue"); for (int key = 0; key < array.length; key++){ System.out.println (key + "\t" + array [key]); } } }

加粗部分是我想要抓住的。文件的开头都不同,文件的其余部分根据文件的存储位置而有所不同,因此我需要一种无需太具体就可以抓取字符串的方法。

ABC1D2E34_**ABC12345-67-Q89**_ABC12345_6_7_Scoring.csv

我已经尝试使用上面的代码,并且可以获得 ABC12345-67-。 但是,当我尝试添加以获取最后一点时,我会不断获得超出所需的信息: ABC12345-67-Q89_ABC12345_6_7 _

似乎应该有一个简单的修复程序,但是我还没有弄清楚,因此可以提供任何帮助。

1 个答案:

答案 0 :(得分:1)

使用两个取反的字符集很简单,第一个字符集锚定在字符串的开头:

filename = 'ABC1D2E34_ABC12345-67-Q89_ABC12345_6_7_Scoring.csv'
print(re.findall('^[^_]+_([^_]+)',filename))

打印:

['ABC12345-67-Q89']

请注意,正则表达式不是唯一的,实际上不是最佳解决方案

您可以按照以下评论中的说明使用filename.split('_')[1]