【问题标题】:How to check the format of a string in python?如何在python中检查字符串的格式?
【发布时间】:2017-09-13 09:45:21
【问题描述】:

我想检查车牌等字符串的格式,但不知道从哪里开始。

我想让程序检测一个字符串是否遵循“LLNN LLL”格式,其中L是字母,N是数字。

我已经看到了许多其他关于检查字符串格式的问题,但它们是针对不同的编程语言的。

【问题讨论】:

  • 你可以自己编码,看看正则表达式。
  • 这是正则表达式的工作,见regex howto

标签: python string string-formatting


【解决方案1】:

这样的模式匹配是通过正则表达式解决的。

正则表达式 - 或 regex - 是一个字符串,定义了用于其他字符串的搜索模式。

在python中,它们被the re module覆盖。

例如,以下使用集合匹配 [] 来搜索任一 ab,然后是 c。在第一种情况下它将返回None,因为它与cc 不匹配。在第二种情况下,找到一个匹配项:zs 和 xs 之间的 bc。因此,它会在 if 语句中评估为 True

matches_none = re.search('[ab]c', 'cc')
matches_once = re.search('[ab]c', 'qqqzzzbcxxx')

正如 Python 文档所述,有某些特殊序列可以匹配集合或某些条件。例如,\d 将匹配任何数字,\w 将匹配任何字母数字。以下所有内容均找到匹配项。

re.search('\w\d', '!!!54???')
re.search('\d\w', '!!5a?@#[ff')
re.search('[abc]\d\w', 'a5a')

正则表达式还有许多其他功能,包括挑选匹配组、前瞻、字符串开头和结尾匹配的能力,以及处理计数和多重性的各种方式。

【讨论】:

    【解决方案2】:

    我想这就是你要找的东西

    In [1]: import re
    
    In [2]: temp = 'LL22 LLL'
    
    In [3]: re.findall(r'[a-zA-Z][a-zA-Z]\d\d [a-zA-Z]+',temp)
    Out[3]: ['LL22 LLL']
    

    【讨论】:

    • 解释什么是正则表达式会比只用代码 sn-p 解决手头的问题而没有任何解释更有帮助。
    • @brunodesthuilliers 第一个答案已经是对正则表达式的解释。回答一些事情没有任何意义。因此我写了一个问题的解决方案
    • 那么您可能已将此作为对第一个答案的评论发布。
    • @brunodesthuilliers 对不起,我是 stackoverflow 的新手,但我不知道如何将多行代码作为评论发布..
    猜你喜欢
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 1970-01-01
    相关资源
    最近更新 更多