使用正则表达式提取文件路径并将其保存在python中
我有一个文本文件,其中包含许多文件path file.txt: 我使用Regex从路径中提取日期所做的操作:使用正则表达式提取文件路径并将其保存在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})
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