想要读取一个文件并筛选特定的文件名该怎么做呢

2020-08-26 14:27:08 +08:00
 jeblur

Very Very New to Python... 我的想法是先 with open 打开文件,然后读每行的内容,并用正则表达式筛选特定的内容。

但查了很多代码好像都没能做成

import re
import os
import sys

stringToMatch = '[^/]*\.js'
matchedLine = ''

with open('access_log.txt') as f:
        for line in f:
                if stringToMatch in line:
                        print line

上面是其中一个。。 运行后完全没有输出[一脸懵]

1197 次点击
所在节点    Python
3 条回复
imn1
2020-08-26 14:35:55 +08:00
stringToMatch = r'[^/]+\.js'
...
if re.search(stringToMatch, line):
...
jeblur
2020-08-26 15:11:35 +08:00
@imn1 太感谢了!可以输出 line 了,还想问下如果要匹配特定的值,比如代码中的*.js 文件,要换掉 search 这个方法吗。关于这个正则表达式我能理解的是匹配到第一个 /开始然后以.js 结尾,最后我需要加$结束吗。

抱歉问了这么多问题:>
imn1
2020-08-26 15:43:57 +08:00
你理解错了
这个正则是 一个或多个不是“/”的字符后面紧接.js ,在一行里面的任意位置,没有方括号的^才是行首
如果你确定匹配结尾是.js 才用$,如果在行中间就不需要( line 最后应该是个换行符,不过你可以测试一下能否匹配)
re 里面有很多匹配的方法,只是这个 search 用于“是否匹配”比较简单,根据需要你可以用其他的

你需要学习正则,以及 re 的方法

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/701586

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX