Python:以任何字母字符开头

teg*_*ggy 21 python startswith

如何使用startswith函数匹配任何alpha字符[a-zA-Z].例如,我想这样做:

if line.startswith(ALPHA):
    Do Something
Run Code Online (Sandbox Code Playgroud)

dan*_*n04 47

如果你想匹配非ASCII字母,你可以这样做:

if line and line[0].isalpha():
Run Code Online (Sandbox Code Playgroud)

  • 更短:`if line [:1] .isalpha():` (17认同)
  • @teggy:区别在于如果line是一个空字符串,line [:1]将计算为空字符串,而line [0]将引发IndexError. (7认同)

efo*_*nis 10

您可以将元组传递给startswiths()(在Python 2.5+中)以匹配其任何元素:

import string
ALPHA = string.ascii_letters
if line.startswith(tuple(ALPHA)):
    pass
Run Code Online (Sandbox Code Playgroud)

当然,对于这种简单的情况,正则表达式测试或in运算符将更具可读性.


Il-*_*ima 5

一个简单的解决方案是使用python regex模块:

import re
if re.match("^[a-zA-Z]+.*", line):
   Do Something
Run Code Online (Sandbox Code Playgroud)

  • 即使你被迫使用re模块,你只需要`[a-zA-Z]`.`^`是浪费击键(阅读文档部分关于`search`和`match`之间的区别).`+`是一个很小的浪费时间(如果字符串在开头有很多字母则是主要的); 一封信就足够了.`.*`浪费了2次击键,可能还有更多的时间. (5认同)