刚刚写了这个函数......
def nrofleadingchars(stringtotest, testchar='\t'):
count = 0
for c in stringtotest:
if c == testchar:
count = count + 1
else:
return count
return count
Run Code Online (Sandbox Code Playgroud)
然而,感觉不到pythonic'够',建议?
import itertools
def nrofleadingchars(stringtotest, testchar='\t'):
return len(list(itertools.takewhile(lambda x: x == testchar, stringtotest)))
Run Code Online (Sandbox Code Playgroud)
由于需要构建列表,对于具有非常大的前缀的事物而言,这可能效率较低.如果我可能会处理这样的问题,我可能会写这个:
def num_leading_chars(a_string, prefix='\t'):
for idx, char in enumerate(a_string):
if char != prefix:
return idx
return len(a_string)
Run Code Online (Sandbox Code Playgroud)
您可以删除匹配的前导字符,并根据长度计算差异.
def nrofleadingchars(stringtotest, testchar='\t'):
return (len(stringtotest) - len(stringtotest.lstrip(testchar))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
101 次 |
| 最近记录: |