geekdoc-python-zh/docs/askpython/find-string-length-in-pytho...

107 lines
2.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 在 Python 中查找字符串长度
> 原文:<https://www.askpython.com/python/string/find-string-length-in-python>
我们可以在 Python 中使用内置的`len()`函数找到[字符串](https://www.askpython.com/python/python-data-types#python-string)长度。让我们看看这个函数是如何工作的,并且让我们尝试使用`len()`来查找各种类型的 Python 字符串的长度。
* * *
## 使用 len()
我们来看一些简单的例子来说明`len()`。
```py
>>> a = "Hello from AskPython"
>>> print(len(a))
20
```
这会打印 20因为这是字符串中的字符数。因此我们可以使用`len()`找到长度。
即使字符串有特殊字符,只要它能以某种 Unicode 格式编码,我们就能计算它的长度。
```py
>>> a = 'AåBç'
>>> print(len(a))
4
```
对于带有特殊转义字符的字符串(它们以反斜杠`(\)`为前缀),只有字符会被计入长度,而反斜杠不会。例子包括(`\n`、`\t`、`\'`等)
```py
>>> a = 'A\t\t'
>>> print(len(a))
3
>>> b = 'A\n\nB'
>>> print(len(b))
4
>>> c = 'A\'B'
>>> print(len(c))
3
```
对于原始字符串,由于它们将反斜杠(`\`)视为文字,所以反斜杠将计入字符串的长度。
```py
>>> s = r'A\t\t'
>>> print(len(s))
5
```
* * *
## 透镜的工作()
当我们使用 String 对象调用`len()`函数时String 对象的`__len__()`方法被调用。
```py
>> a = "Hello from AskPython"
>>> a.__len__()
20
```
为了证明这一点,让我们在自定义类上实现我们自己的`len()`。既然`__len__()`作用于对象,我们必须继承类`object`。
```py
class Student(object):
def __init__(self, name):
self.name = name
def __len__(self):
print("Invoking the __len__() method on the Student Object to find len()...")
count = 0
for i in self.name:
count += 1
return count
a = Student("Amit")
print(len(a))
```
由于`len()`方法调用了`__len__()`,我们将遍历该函数,它计算 iterable 中对象的数量。因为我们传递了一个字符串,我们将简单地得到长度,结果是 4
**输出**
```py
Invoking the __len__() method on the Student Object to find len()...
4
```
因此,我们为类`Student`实现了自己的`len()`方法!很神奇,不是吗?
* * *
## 参考
* 关于字符串长度的 JournalDev 文章
* * *