【问题标题】:Pattern test for string ending in Python以 Python 结尾的字符串的模式测试
【发布时间】:2017-04-18 18:14:25
【问题描述】:

在 Python 中,如何对字符串结尾进行模式测试。所以就像这样:

"name.txt"=="*.txt"

我尝试使用 re 库:

pattern = re.compile("*.txt")
pattern.match("somename.txt")

但显而易见的似乎行不通。有人可以粘贴他的代码吗?请不要链接到 re libray 参考。今天我搞砸了。谢谢各位!

【问题讨论】:

  • "name.txt".endswith('.txt') 用于简单的后缀。 '*.txt' 无效,'*' 是重复运算符。 '.' 匹配任何字符。锚定是您的终端朋友:r'.*\.txt$'。但是,是的,只需使用fnmatch()
  • 这不是正则表达式模式。您要查找的模块是fnmatch
  • @dhke 以* 开头的模式根本无效。
  • @AlexHall ... 还有那个。固定。
  • 酷,好的。谢谢!

标签: python string design-patterns conditional-statements


【解决方案1】:

为了您的学习,如果您想使用正则表达式搜索文件扩展名,您可以执行以下操作,该模式在提供的字符串末尾搜索(\Z 指定在末尾匹配):

import re

pattern = re.compile(".txt\Z")

if pattern.search('name.txt'):
    print "Match"
else:
    print "No match"

【讨论】:

  • 我在这里也学到了,如果在 if 函数中评估 True 的模式,如果直接评估的话,尽管会打印出奇怪的输出。评估 pattern.search('name.txt') 直接给出: <_sre.sre_match object span="(4," match=".txt">
【解决方案2】:

您可以使用endswith 来检查字符串是否以指定文本结尾。

filename = "name.txt"
pattern = ".txt"

print filename.endswith(pattern)

【讨论】:

    【解决方案3】:

    你可以做一个简单的测试:

    >>> file="name.txt"
    >>> pattern=".txt"
    >>> pattern in file
    True
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-26
      • 1970-01-01
      • 2022-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多