Python字符串是否以终止NULL结尾?

ayu*_*hgp 14 python

Python字符串的末尾是否有特殊字符?就像它在C或C++中是\ 0.我想在不使用内置len函数的情况下计算python中字符串的长度.

mha*_*wke 17

Python中没有字符串结尾字符,至少没有公开的字符,它将依赖于实现.字符串对象保持自己的长度,而不是你需要关注的东西.有几种方法可以在不使用的情况下获取字符串的长度len().

str = 'man bites dog'
unistr = u'abcd\u3030\u3333'

# count characters in a loop
count = 0
for character in str:
    count += 1
>>> count
13

# works for unicode strings too
count = 0
for character in unistr:
    count += 1
>>> count
6

# use `string.count()`
>>> str.count('') - 1
13
>>> unistr.count(u'') - 1
6

# weird ways work too
>>> max(enumerate(str, 1))[0]
13
>>> max(enumerate(unistr, 1))[0]
6
>>> str.rindex(str[-1]) + 1
13
>>> unistr.rindex(unistr[-1]) + 1
6

# even weirder ways to do it
import re
pattern = re.compile(r'$')
match = pattern.search(str)
>>> match.endpos
13
match = pattern.search(unistr)
>>> match.endpos
6
Run Code Online (Sandbox Code Playgroud)

我怀疑这只是冰山一角.

  • 使用正则表达式来获取字符串的长度?这是我今天看到的最有趣的事情. (3认同)