使用正则表达式提取文件路径并将其保存在python中
Posted
技术标签:
【中文标题】使用正则表达式提取文件路径并将其保存在python中【英文标题】:Use Regex to extract file path and save it in python 【发布时间】:2016-02-03 21:10:18 【问题描述】:我有一个包含大量文件路径的文本文件 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']]
或将其保存为熊猫系列。
regex
有什么办法可以得到我想要的东西!?
【问题讨论】:
你说输出不是你所期望的,但我没有看到你的代码产生任何输出。textfile.read()
将文件的全部内容作为一个长字符串返回。 for line in filetext
循环遍历每个字符。
@john-gordon 确切地说,我得到了每个字符串。而且 readline() 又给了我第一行字符的字符串
【参考方案1】:
您可以将您的正则表达式简化为:
/(....)(..)..\.bin$/
第 1 组有年份,第 2 组有月份。我假设该格式适用于整个文件。
现在,.
代表 任何 字符,\.
代表“点”或文字 .
。 $
表示在字符串的结尾。
所以,我在行尾匹配.bin
,省略了日期,只对年和月进行分组。
【讨论】:
@amit-joki 我没明白你的意思,我是正则表达式的新手。你能扩展和解释你的代码吗 @Milban 我在 python 上很糟糕,很抱歉。我猜另一个答案在这方面有所帮助。【参考方案2】:用熊猫试试这个:
df = pd.read_csv('yourfile.txt',header=None)
df.columns = ['paths']
# pandas string method extract takes a regex
df['paths'].str.extract('(\d4)(\d2)')
输出:
0 1
0 2007 05
1 2007 06
2 2007 07
3 2007 08
【讨论】:
这正是我想要的,谢谢以上是关于使用正则表达式提取文件路径并将其保存在python中的主要内容,如果未能解决你的问题,请参考以下文章
如何在 JSON 字段上应用正则表达式以从中提取某些值并将其存储到 Mule Studio 的 PostgreSQL Dataabse 中?