V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
jeblur
V2EX  ›  Python

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

  •  
  •   jeblur · 2020-08-26 14:27:08 +08:00 · 1256 次点击
    这是一个创建于 1552 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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
    

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

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

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

    你需要学习正则,以及 re 的方法
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1044 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:37 · PVG 04:37 · LAX 12:37 · JFK 15:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.