回答
如果你想匹配的非ASCII字符,以及,你可以這樣做:
if line and line[0].isalpha():
一個簡單的解決辦法是使用Python正則表達式模塊:
import re
if re.match("^[a-zA-Z]+.*", line):
Do Something
-1:使用正則表達式是大規模overkil l爲此任務。你也只需要檢查第一個字符 - 這個正則表達式會嘗試匹配整個字符串,這可能會很長。 – 2010-03-07 10:12:07
即使你被迫使用re模塊,你所需要的只是'[a-zA-Z]'。 '^'是對按鍵的浪費(閱讀關於'search'和'match'之間區別的docs部分)。 '+'是時間的微小浪費(如果字符串在開始時有很多字母,則是主要的);一個字母就夠了。 '。*'是浪費2次擊鍵,可能還有更多時間。 – 2010-03-07 10:53:17
您可以傳遞一個元組startswiths()
(在Python 2.5+)來匹配任何元素:
import string
ALPHA = string.ascii_letters
if line.startswith(tuple(ALPHA)):
pass
當然,對於這種簡單的情況下,一個正則表達式測試或操作者in
會更具有可讀性。
我不知道。 +1不是針對這個問題的最佳答案,而是因爲這對我自己的代碼來說是最好的答案。謝謝。 – DaveTheScientist 2012-05-09 21:27:45
這可能是最有效的方法:
if line != "" and line[0].isalpha():
...
+1,這是最好的解決方案,尤其是如果包裝在函數中,或者甚至包含某種驗證類的方法。 – 2010-03-07 10:14:58
爲什麼你認爲這比'if line和line [0] .isalpha():'更好? – 2010-03-07 10:35:31
,如果你不關心空白在字符串的前面,
if line and line.lstrip()[0].isalpha():
if line.startswith((chr(x) for x in range(ord('a'), ord('z')+1)+range(ord('A'), ord('Z')+1)):
# do processsing
pass
- 1. 搜索以字母開頭
- 2. 打印行如果行以字母表中的任何字母開頭
- 3. 刪除任何以大寫字母開頭的行
- 4. 以字母開頭的粗體字
- 5. RegEx以字母或數字開頭0
- 6. oracle主鍵以字母開頭
- 7. 將IDENTITY設置爲以字母開頭
- 8. 範圍滑塊以字母開頭
- 9. 以字母開頭的返回值
- 10. Fetch帖子以字母開頭[x]
- 11. 單詞不以字母開頭
- 12. Python以字母開頭,結合兩個for循環?
- 13. Python:正則表達式去除以字母開頭的零?
- 14. 打印列表時,Python會以字母開頭?
- 15. 如何查詢字段何時不以字母開頭?
- 16. 以字母/ _開頭的字符串和(可能)以下字母/數字/ _
- 17. 如何使textField的第一個字符只以字母開頭?
- 18. 按歌手名字開頭的iTunes歌曲數量以字母開頭
- 19. preg_match字符串必須以字母字符開頭
- 20. Python模塊名稱以數字開頭
- 21. 如何刪除以特定字母開頭的文件
- 22. 如何獲取以大寫字母開頭的所有單詞?
- 23. 如何獲得以指定字母開頭的所有單詞
- 24. 如何抓取以大寫字母開頭的所有單詞?
- 25. 如何讓mysql備份表以特定字母開頭?
- 26. 如何獲得以特定字母開頭的結果?
- 27. 如何獲取以A開頭的行(大寫字母)?
- 28. PostgreSQL正則表達式檢查以拉丁字母和字母字符開頭
- 29. PHP preg_match_all字符串開頭@通過任何字符以下
- 30. SQL函數篩選出以'ABC'或任意三個字母開頭的列值
+1,這是最好的解決方案,尤其是如果包裝在一個函數中,或者甚至包含一些驗證類的方法。 – 2010-03-07 10:58:55
當然,行必須是非Ascii部分才能工作的unicode對象。 – u0b34a0f6ae 2010-03-07 11:39:54
甚至更短:'if line [:1] .isalpha():' – 2010-03-07 11:47:53