Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用正则表达式提取文件路径并将其保存在python中_Python_Regex_Pandas - Fatal编程技术网

使用正则表达式提取文件路径并将其保存在python中

使用正则表达式提取文件路径并将其保存在python中,python,regex,pandas,Python,Regex,Pandas,我有一个文本文件,其中包含许多文件path file.txt: 我使用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})

我有一个文本文件,其中包含许多文件path file.txt:

我使用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']]
将其另存为熊猫系列


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

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

/(....)(..)..\.bin$/
第一组有年份,第二组有月份。我假设该格式在整个文件中都是相关的

现在,
表示任何字符,
\。
表示“点”或文字
<代码>$表示在字符串末尾。 因此,我在这行末尾匹配
.bin
,省去了日期,只对年份和月份进行分组。

尝试使用熊猫:

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

您说输出不是您所期望的,但我看不出您的代码产生任何输出。
textfile.read()
将文件的全部内容作为一个长字符串返回。filetext中的
for line循环在每个字符上循环。@john gordon确切地说,我得到了每个字符串的值。而且readline()只给了我字符的第一行string@amit-joki我不明白你的意思,我是regex的新手。你能解释一下你的观点吗code@Milban我对python很在行,很抱歉。我想另一个答案在这方面很有帮助。这正是我想要的,谢谢
       0    1
0   2007    05
1   2007    06
2   2007    07
3   2007    08