使用Regex提取文件路径并将其保存在python中

时间:2015-11-03 16:09:16

标签: python regex pandas

我有一个文本文件,其中包含大量文件路径 file.txt

C:\data\AS\WO\AS_WOP_1PPPPPP20070506.bin
C:\data\AS\WO\AS_WOP_1PPPPPP20070606.bin
C:\data\AS\WO\AS_WOP_1PPPPPP20070708.bin
C:\data\AS\WO\AS_WOP_1PPPPPP20070808.bin
...

我使用 Regex 从路径中提取日期:

import re

textfile = open('file.txt', 'r')
filetext = textfile.read()
textfile.close()

data = []

for line in filetext:
    matches = re.search("AS_[A-Z]{3}_(.{7})([0-9]{4})([0-9]{2})([0-9]{2})", line)
    data.append(line)

它没有给出我想要的东西。

我的输出应该是这样的:

year    month
2007     05
2007     06
2007     07
2007     08

然后将其另存为列表列表

[['2007', '5'], ['2007', '6'], ['2007', '7'], ['2007', '8']]

将其另存为 Pandas系列

regex有什么方法可以得到我想要的东西吗?

2 个答案:

答案 0 :(得分:3)

您可以将正则表达式简化为:

/(....)(..)..\.bin$/

第1组将拥有该年份,而第2组将拥有该月份。我假设格式与整个文件有关。

现在,.代表任何字符,\.代表“dot”或文字.$表示字符串的末尾。 所以,我在该行的末尾匹配.bin,并且只剩下一天,只是将年份和月份分组。

答案 1 :(得分:2)

使用pandas试试这个:

df = pd.read_csv('yourfile.txt',header=None)
df.columns = ['paths']
# pandas string method extract takes a regex
df['paths'].str.extract('(\d{4})(\d{2})')

输出:

       0    1
0   2007    05
1   2007    06
2   2007    07
3   2007    08