【问题标题】:Parsing a file containing filenames and ignoring entries with multiple dot characters?解析包含文件名的文件并忽略具有多个点字符的条目?
【发布时间】:2019-06-10 20:43:06
【问题描述】:

我有一个包含一堆文件名的文件,即:

hello.txt  
goodbye.py  
test..pdf  
n3w.world.file.text
...

我试图忽略所有带有多个点的文件名。 目前我可以使用以下方法找到所有文件名:

data = ['hello.txt', 'goodbye.py', 'test..pdf', 'n3w.world.file.text']
matches = re.findall('([\w].+)\.(\w+)', data)
print(matches)

但是,这会打印出所有文件名。我怎样才能将其修改为仅打印出:hello.txtgoodbye.py

【问题讨论】:

标签: python python-3.x regex python-re


【解决方案1】:

在这种情况下,正则表达式是多余的。你可以使用str.count()函数:

data = ['hello.txt', 'goodbye.py', 'test..pdf', 'n3w.world.file.text']

data = [w for w in data if w.count('.') < 2]
print(data)

打印:

['hello.txt', 'goodbye.py']

【讨论】:

    【解决方案2】:
       data = [i for i in data if '..' not in i]
    

    可以使用上面的代码

    【讨论】:

    • 如果问题是忽略具有多个连续点的文件名,这将是一个很好的答案。但是,它没有提到这一点,并且提供的示例数据另有说明:您的解决方案还包括“n3w.world.file.text”,根据问题中的标准,这是不正确的。所以,Andrej 的解更准确。
    猜你喜欢
    • 2019-07-07
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    相关资源
    最近更新 更多