回答
如果你想匹配的非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