什么是最好的纯Python实现来检查一个字符串是否包含字母表中的任何字母?如何检查字符串是否包含字母表中的任何字母?
string_1 = "(555).555-5555"
string_2 = "(555) 555 - 5555 ext. 5555
凡string_1
将返回False
对于具有它没有字母表的字母和string_2
将返回True
具有信件。
什么是最好的纯Python实现来检查一个字符串是否包含字母表中的任何字母?如何检查字符串是否包含字母表中的任何字母?
string_1 = "(555).555-5555"
string_2 = "(555) 555 - 5555 ext. 5555
凡string_1
将返回False
对于具有它没有字母表的字母和string_2
将返回True
具有信件。
正则表达式应该是一个快速的方法:
re.search('[a-zA-Z]', the_string)
谢谢JBernado,这就是我最终做的事情,它完美地工作,完成我需要做的事情。 – 2012-01-31 17:16:22
@JustinPapez你应该接受这个答案然后... – sadmicrowave 2013-05-30 18:16:12
哎呀,我完全忘了,谢谢你的提醒。 – 2013-06-01 17:53:29
如何:
>>> string_1 = "(555).555-5555"
>>> string_2 = "(555) 555 - 5555 ext. 5555"
>>> any(c.isalpha() for c in string_1)
False
>>> any(c.isalpha() for c in string_2)
True
您可以使用正则表达式是这样的:
import re
print re.search('[a-zA-Z]+',string)
您可以在字符串中使用islower()
看看它是否包含一些小写字母(以及其他字符)。 or
它isupper()
也检查是否包含一些大写字母:
:字母串的:测试良率真
>>> z = "(555) 555 - 5555 ext. 5555"
>>> z.isupper() or z.islower()
True
下面
:在字符串中没有字母:测试良率假。
>>> z= "(555).555-5555"
>>> z.isupper() or z.islower()
False
>>>
不要与isalpha()
返回True
只有当所有字符是字母,这是不是你想要的东西混在一起。
请注意,Barm的回答非常好,因为我没有很好地处理混合情况。
我喜欢这将测试它是否包含字母,而不仅仅是测试如果输入是全部字母。 – Cornbeetle 2017-04-20 16:14:02
@Cornbeetle是的,那种真正回答所有这些年来的问题,谢谢 – 2017-04-20 16:33:33
我喜欢@ jean-françois-fabre提供的答案,但它不完整。
他的方法将工作,但只有当文本包含纯小写或大写字母:
>>> text = "(555).555-5555 extA. 5555"
>>> text.islower()
False
>>> text.isupper()
False
更好的方法是先大写或小写您的字符串,然后检查。
>>> string1 = "(555).555-5555 extA. 5555"
>>> string2 = '555 (234) - 123.32 21'
>>> string1.upper().isupper()
True
>>> string2.upper().isupper()
False
是否仅限于英语a/z字母表?应该考虑像德文这样的来自其他字母的“特殊”字符吗? – Kotch 2012-01-31 00:35:32
你有没有机会收到unicode?或者只是简单的ascii罗马字母? – KobeJohn 2012-01-31 00:39:06
好时机:)无论如何,如果你需要使用unicode字符测试字符串的帮助,请检查这个类似的问题。 – KobeJohn 2012-01-31 00:44:52