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

时间:2014-06-25 13:07:45

标签: python

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

7 个答案:

答案 0 :(得分:15)

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

我怀疑这只是冰山一角。

答案 1 :(得分:4)

l = "this is my string"
counter = 0
for letter in l:
    counter += 1

>>> counter
17

答案 2 :(得分:2)

count=0
for i in 'abcd':
    count+=1
print 'lenth=',count

其他方式:

for i,j in enumerate('abcd'):
    pass
print 'lenth=',i+1

enumerate是一个内置函数,它返回一个元组(索引和值)

例如:

l= [7,8,9,10]
print 'index','value'
for i ,j in enumerate(l):
    print i,j

输出:

index   value
0        7
1        8
2        9
3        10

答案 3 :(得分:2)

我找到了几件有趣的事情:

s_1 = '\x00'
print ("s_1 : " + s_1)
print ("length of s_1:  " + str(len(s_1)))

s_2 = ''
print ("s_2 : " + s_2)
print ("length of s_2:  " + str(len(s_2)))

if s_2 in s_1:
    print ("s_2 in s_1")
else:
    print ("s_2 not in s_1")

输出结果为:

s_1 :  
length of s_1:  1
s_2 : 
length of s_2:  0
s_2 in s_1

这里s_1看起来像'',s_2看起来像''或NULL。

答案 4 :(得分:1)

回答你提出的问题:在Python字符串的末尾(你可以看到)没有终止NULL或类似的东西,因为你没有办法#&# 34;脱离结束"一串。在内部,最流行的Python实现是用C语言编写的,所以在某个地方可能会有一个以NULL结尾的字符串。但作为Python开发人员,这对你来说完全不透明。

如果你想在不使用内置函数的情况下获得长度,你可以做很多不同的事情。这是一个与此处发布的其他选项不同的选项:

sum([1 for _ in "your string goes here"])

在我看来,这更优雅了。

答案 5 :(得分:1)

请点击此处获取答案, 现在发布我发现的内容:

def rec_len(s, k = 0):
try:
    c = s[k]
    return 1 + rec_len(s, k + 1)
except:
    return 0

print(rec_len(“ DoIt”))

答案 6 :(得分:0)

字符串的最后一个索引由-1表示我想表示的是,如果要获取字符串中的最后一个字符,则需要使用string [-1],因此,使用-1可以不使用len而获得字符串的长度。 ()功能 请尝试以下

s="helllooooo"
for a in s:
    length=s.rindex(s[-1])
print(length+1)

它将给出与len()相同的答案