什麼是最好的純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