Python 检测特定字母序列中的代码
我使用语言代码,特别是标准,它使用三个字母代码来表示语言(英语为Python 检测特定字母序列中的代码,python,python-3.x,Python,Python 3.x,我使用语言代码,特别是标准,它使用三个字母代码来表示语言(英语为eng,日语为jpn,等等) 但是,qaa–qtz范围内的代码不是正确的语言代码,而是用户必须定义的空代码。因此,qaa,qab…qaz,qba,等等 我想知道如何编写能够检测代码是否属于本系列的代码?在这些代码中,最后一个字母穿过a-z,然后从第二个字母中的新序列开始。有点像一个三位数的数字,除了0-9位数之外,它是a-z字母 通过与模式“q[a-t][a-z]”匹配的正则表达式,您可以轻松做到这一点 import re
eng
,日语为jpn
,等等)
但是,qaa–qtz
范围内的代码不是正确的语言代码,而是用户必须定义的空代码。因此,qaa
,qab
…qaz
,qba
,等等
我想知道如何编写能够检测代码是否属于本系列的代码?在这些代码中,最后一个字母穿过a-z,然后从第二个字母中的新序列开始。有点像一个三位数的数字,除了0-9位数之外,它是a-z字母 通过与模式“q[a-t][a-z]”匹配的正则表达式,您可以轻松做到这一点
import re
a = ['abc','qaa','qbc','qtz','q12','qua','qabx']
for i in a:
if re.match('q[a-t][a-z]',i) and len(i) == 3:
b = 'MATCH'
else:
b = 'NO MATCH'
print('{} : {}'.format(i,b))
编辑:忘记做长度检查。如果没有它,正则表达式将在“qabx”上找到一个正匹配项,它不符合您想要的模式。您可以通过正则表达式匹配模式“q[a-t][a-z]”轻松做到这一点
import re
a = ['abc','qaa','qbc','qtz','q12','qua','qabx']
for i in a:
if re.match('q[a-t][a-z]',i) and len(i) == 3:
b = 'MATCH'
else:
b = 'NO MATCH'
print('{} : {}'.format(i,b))
编辑:忘记做长度检查。如果没有它,正则表达式将在“qabx”上找到一个正匹配项,它不符合您想要的模式。正则表达式可以轻松地处理这个问题。请参阅。这看起来很简单,即使不知道关于regex的任何信息:
code[0]=='q'和'a'此外,PyPI上是否已经有用于此的库?这似乎是一个足够普遍的东西,会有。@abarnert有,但它已经过时了(大约三年了)。那呢?据我所知,您链接到的是一个分支(属于)pycountry
,该分支由一个不喜欢他们在大约3年前可能进行的更改的人创建(并且它也从LGPL重新授权为AGPL,如果您的主程序与AGPL不兼容,这可能是一个问题)。正则表达式可以轻松地处理这个问题。请参阅。这看起来很简单,即使不知道关于regex的任何信息:code[0]=='q'和'a'此外,PyPI上是否已经有用于此的库?这似乎是一个足够普遍的东西,会有。@abarnert有,但它已经过时了(大约三年了)。那呢?据我所知,你链接到的是一个(部分)pycountry
的分支,有人不喜欢3年前可能发生的变化(而且它也从LGPL重新许可到AGPL,如果你的主程序与AGPL不兼容,这可能是个问题)。无需进行长度检查,只需将^
放在图案的前面,将$
放在末尾。无需进行长度检查,只需将^
放在图案的前面,将$
放在末尾即可。