Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erläuterung der Grundkenntnisse über String-Typen in Python

Ausführliche Erläuterung der Grundkenntnisse über String-Typen in Python

高洛峰
高洛峰Original
2017-03-13 15:34:291505Durchsuche

In diesem Artikel wird hauptsächlich das Tutorial zum Erlernen von Grundkenntnissen zum Eingeben von String in Python vorgestellt, einschließlich Escape-Zeichen und String-Verkettung sowie Original-String zur Erklärung Freunde, die Grundkenntnisse benötigen, können sich auf

beziehen. Wenn es viele mittlere Klassifizierungsmethoden für die Klassifizierung natürlicher Sprachen gibt, wie z. B. Englisch, Französisch, Chinesisch usw., ist diese Klassifizierungsmethode die gebräuchlichste. In der Linguistik gibt es auch Möglichkeiten, Sprachen zu klassifizieren, beispielsweise Sprachfamilien. Ich schlage hier eine Klassifizierungsmethode vor. Diese Klassifizierungsmethode wurde von der breiten Masse der Menschen und Forscher noch nicht allgemein anerkannt. Ich glaube jedoch, dass der Spruch „Die Wahrheit liegt in den Händen einiger weniger Menschen“ verwendet werden kann Hier, um es mir selbst zu erklären.

Meine Art, es zu unterteilen: Eine besteht darin, zwei Elemente in der Sprache (z. B. zwei Wörter) zusammenzufügen, um ein neues Element (z. B. ein neues Wort) zu erstellen. Die andere besteht darin, zwei Elemente zusammenzufügen erhalten Sie lediglich eine Gegenüberstellung dieser beiden Elemente. Zum Beispiel sind „gut“ und „Menschen“ die beiden zusammengefügten Elemente „gute Menschen“, und die Verbindung von 3 und 5 (dh der Summe von Ganzzahlen) zusammen ergibt 8. Wenn Sie denken, dass es 35 ist, dann gehört es zur zweiten Kategorie.

Zusammenfassung meiner Abteilung:

Eine ist: △ + □ = ○
Die andere ist: △ + □ = △ □
Unsere In der Sprache sind die beiden oben genannten Kategorien untrennbar miteinander verbunden , entweder die erste Kategorie oder die zweite Kategorie.

Was für ein Genie. Bitte applaudieren Sie.

String
Als ich selbstgefällig war, habe ich gegoogelt und festgestellt, dass ich nicht so schlau war:

String ( String) ist eine endliche Folge von null oder mehr Zeichen. Im Allgemeinen als s=a[1]a[2]...a[n] aufgezeichnet.
Sehen Sie, wie großartig Wikipedia ist. Es hat einer Situation, die ich mir vorgestellt habe, einen anschaulichen Namen gegeben, der als Zeichenfolge bezeichnet wird und im Wesentlichen eine Zeichenfolge ist.

Nach dieser Definition ist „Hello, World“, das einem Programmierer schon zweimal ein gutes Gefühl gegeben hat, eine Zeichenfolge. Mit anderen Worten, egal ob in Englisch, Chinesisch oder einer anderen Sprache, der geschriebene Text kann als Zeichenfolge behandelt werden. Natürlich können die darin enthaltenen Sonderzeichen wie Leerzeichen usw. auch als Zeichenfolge verwendet werden.

Genau genommen ist ein String in Python ein Objekttyp. Dieser Typ wird durch str dargestellt, normalerweise in einfache Anführungszeichen '' oder doppelte Anführungszeichen " eingeschlossen.

Strings sind, wie die zuvor erwähnten Zahlen, beide Objekttypen oder Werte. Natürlich sind die Ausdrucksmethoden immer noch unterschiedlich.


"I love Python." 'I love Python.' 'I LOVE PYTHON.' 'I LOVE PYTHON.'


Wie Sie an diesen beiden Beispielen sehen können, ist das Ergebnis unabhängig davon, ob Sie einfache oder doppelte Anführungszeichen verwenden, das gleiche .


>>> 250
250
>>> type(250)
<type &#39;int&#39;>

>>> "250"
&#39;250&#39;
>>> type("250")
<type &#39;str&#39;>


Sehen Sie sich den Unterschied oben genau an. Es ist auch 250. Einer steht nicht in Anführungszeichen, der andere schon In Anführungszeichen gesetzt, verwenden Sie die Funktion type(), um zu überprüfen, ob es sich tatsächlich um zwei verschiedene Objekttypen handelt, ersterer vom Typ int und letzterer vom Typ str, also vom Typ string . Daher muss jeder darauf achten, dass nicht alle Zahlen int (oder float) sind. Sie müssen sehen, wo sie in Anführungszeichen stehen. Wenn Sie nicht wissen, um welchen Typ es sich handelt, lassen Sie sich von type() dabei helfen, es herauszufinden.

Lass uns Streichinstrumente üben.


>>> print "good good study, day day up"
good good study, day day up
>>> print "----good---study---day----up"
----good---study---day----up


Nach dem Drucken ist alles, was gedruckt wird, eine Zeichenfolge. Beachten Sie, dass es in doppelten Anführungszeichen steht und die Anführungszeichen nicht Teil der Zeichenfolge sind. Es teilt dem Computer mit, dass es in eine Zeichenfolge eingewickelt ist.

Denkende Leser müssen mit dem obigen Satz etwas Falsches gefunden haben. Was soll ich tun, wenn ich den folgenden Satz als Zeichenfolge behandeln möchte?

Wie heißt du?
Diese Frage ist sehr gut, da dieser Satz ein einfaches Anführungszeichen enthält. Wenn Sie es wie oben direkt im interaktiven Modus eingeben, sieht es so aus Dies:


>>> &#39;What&#39;s your name?&#39;
File "<stdin>", line 1
 &#39;What&#39;s your name?&#39;
  ^
SyntaxError: invalid syntax


Es erscheint eine SyntaxError (Syntaxfehler)-Eingabeaufforderung, die uns mitteilt, dass hier und beim Typ ein Fehler vorliegt des Fehlers Es handelt sich um SyntaxError, gefolgt von der Erklärung dieses Fehlers „ungültige Syntax“ (ungültige Syntax). Achten Sie besonders auf die Tatsache, dass sich über der Fehlermeldung ein ^-Symbol befindet, gefolgt von einem einfachen Anführungszeichen. Sie können sich natürlich vorstellen, dass hier möglicherweise ein Fehler vorliegt.

在 python 中,这一点是非常友好的,如果语句存在错误,就会将错误输出来,供程序员改正参考。当然,错误来源有时候比较复杂,需要根据经验和知识进行修改。还有一种修改错误的好办法,就是讲错误提示放到 google 中搜索
上面那个值的错误原因是什么呢?仔细观察,发现那句话中事实上有三个单引号,本来一对单引号之间包裹的是一个字符串,现在出现了三个(一对半)单引号,computer 姑娘迷茫了,她不知道单引号包裹的到底是谁。于是报错。

解决方法一:双引号包裹单引号


>>> "What&#39;s your name?"
"What&#39;s your name?"


用双引号来包裹,双引号里面允许出现单引号。其实,反过来,单引号里面也可以包裹双引号。这个可以笼统地成为二者的嵌套。

解决方法二:使用转义符

所谓转义,就是让某个符号不在表示某个含义,而是表示另外一个含义。转义符的作用就是它能够转变符号的含义。在 Python 中,用 \ 作为转义符(其实很多语言,只要有转义符的,都是用这个符号)。


>>> &#39;What\&#39;s your name?&#39;
"What&#39;s your name?"


是不是看到转义符 \ 的作用了。

本来单引号表示包括字符串,它不是字符串一部分,但是如果前面有转义符,那么它就失去了原来的含义,转化为字符串的一部分,相当于一个特殊字符了。

变量和字符串
前面讲过变量无类型,对象有类型了,比如在数字中:


>>> a = 5
>>> a
5


其本质含义是变量 a 相当于一个标签,贴在了对象 5 上面。并且我们把这个语句叫做赋值语句。

同样,在对字符串类型的对象,也是这样,能够通过赋值语句,将对象与某个标签(变量)关联起来。


>>> b = "hello,world"
>>> b
&#39;hello,world&#39;
>>> print b
hello,world


还记得我们曾经用过一个 type 命令吗?现在它还有用,就是检验一个变量,到底跟什么类型联系着,是字符串还是数字?


>>> type(a)
<type &#39;int&#39;>
>>> type(b)
<type &#39;str&#39;>


有时候,你会听到一种说法:把a称之为数字型变量,把 b 叫做字符(串)型变量。这种说法,在某些语言中是成立的。某些语言,需要提前声明变量,然后变量就成为了一个筐,将值装到这个筐里面。但是,Python 不是这样的。要注意区别。

拼接字符串
还记得我在本节开篇提出的那个伟大发现吗?就是将两个东西拼接起来。

对数字,如果拼接,就是对两个数字求和。如:3+5,就计算出为 8。那么对字符串都能进行什么样的操作呢?试试吧:


>>> "Py" + "thon"
&#39;Python&#39;


跟我那个不为大多数人认可的发现是一样的,你还不认可吗?两个字符串相加,就相当于把两个字符串连接起来。(别的运算就别尝试了,没什么意义,肯定报错,不信就试试)

>>> "Py" - "thon"  # 这么做的人,是脑袋进水泥了吧?
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: &#39;str&#39; and &#39;str&#39;


用 + 号实现连接,的确比较简单,不过,有时候你会遇到这样的问题:

>>> a = 1989
>>> b = "free"
>>> print b+a
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: cannot concatenate &#39;str&#39; and &#39;int&#39; objects


这里引入了一个指令:print,意思就是打印后面的字符串(或者指向字符串的变量),上面是 Python2 中的使用方式,在 Python3 中,它变成了一个函数。应该用 print(b+a)的样式了。
报错了,其错误原因已经打印出来了(一定要注意看打印出来的信息):cannot concatenate 'str' and 'int' objects。原来 a 对应的对象是一个 int 类型的,不能将它和 str 对象连接起来。怎么办?

原来,用 + 拼接起来的两个对象,必须是同一种类型的。如果两个都是数字,毫无疑问是正确的,就是求和;如果都是字符串,那么就得到一个新的字符串。

修改上面的错误,可以通过以下方法:


>>> print b + `a`  
free1989


注意,\ 是反引号,不是单引号,就是键盘中通常在数字1左边的那个,在英文半角状态下输入的符号。这种方法,在编程实践中比较少应用,特别是在 Python3 中,已经把这种方式弃绝了。我想原因就是这个符号太容易和单引号混淆了。在编程中,也不容易看出来,可读性太差。

常言道:“困难只有一个,解决困难的方法不止一种”,既然反引号可读性不好,在编程实践中就尽量不要使用。于是乎就有了下面的方法,这是被广泛采用的。不但简单,更主要是直白,一看就懂什么意思了。

>>> print b + str(a) 
free1989

用 str(a)实现将整数对象转换为字符串对象。虽然 str 是一种对象类型,但是它也能够实现对象类型的转换,这就起到了一个函数的作用。其实前面已经讲过的 int 也有类似的作用。比如:

>>> a = "250"
>>> type(a)
<type &#39;str&#39;>
>>> b = int(a)
>>> b
250
>>> type(b)
<type &#39;int&#39;>

提醒列位,如果你对 int 和 str 比较好奇,可以在交互模式中,使用 help(int),help(str)查阅相关的更多资料。

还有第三种:

>>> print b + repr(a) #repr(a)与上面的类似
free1989

这里 repr()是一个函数,其实就是反引号的替代品,它能够把结果字符串转化为合法的 python 表达式

可能看官看到这个,就要问它们三者之间的区别了。首先明确,repr()和 \ 是一致的,就不用区别了。接下来需要区别的就是 repr()和 str,一个最简单的区别,repr 是函数,str 是跟 int 一样,一种对象类型。

Python 转义字符
在字符串中,有时需要输入一些特殊的符号,但是,某些符号不能直接输出,就需要用转义符。所谓转义,就是不采用符号本来的含义,而采用另外一含义了。下面表格中列出常用的转义符:

转义字符
描述
\ (在行尾时) 续行符
\ 反斜杠符号
\' 单引号
\" 双引号
\a 响铃
\b 退格(Backspace)
\e 转义
\000
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\oyy 八进制数,yy 代表的字符,例如:\o12 代表换行
\xyy 十六进制数,yy 代表的字符,例如:\x0a 代表换行
\other 其它的字符以普通格式输出


以上所有转义符,都可以通过交互模式下 print 来测试一下,感受实际上是什么样子的。例如:


>>> print "hello.I am qiwsir.\     # 这里换行,下一行接续
... My website is &#39;http://qiwsir.github.io&#39;."
hello.I am qiwsir.My website is &#39;http://qiwsir.github.io&#39;.

>>> print "you can connect me by qq\\weibo\\gmail" #\\ 是为了要后面那个 \
you can connect me by qq\weibo\gmail


raw_input 和 print
分别在交互模式下,将这个两个函数操练一下。

>>> raw_input("input your name:")
input your name:python
&#39;python&#39;

输入名字之后,就返回了输入的内容。用一个变量可以获得这个返回值。

>>> name = raw_input("input your name:")
input your name:python
>>> name
&#39;python&#39;
>>> type(name)
<type &#39;str&#39;>

而且,返回的结果是 str 类型。如果输入的是数字呢?

>>> age = raw_input("How old are you?")
How old are you?10
>>> age
&#39;10&#39;
>>> type(age)
<type &#39;str&#39;>

返回的结果,仍然是 str 类型。

再试试 print(),看前面对它的说明,是比较复杂的。没关系,我们从简单的开始。在交互模式下操作:

>>> print("hello, world")
hello, world
>>> a = "python"
>>> b = "good"
>>> print a
python
>>> print a,b
python good

比较简单吧。当然,这是没有搞太复杂了。

特别要提醒的是,print()默认是以 \n 结尾的,所以,会看到每个输出语句之后,输出内容后面自动带上了 \n,于是就换行了。

有了以上两个准备,接下来就可以写一个能够“对话”的小程序了。

#!/usr/bin/env python
# coding=utf-8

name = raw_input("What is your name?")
age = raw_input("How old are you?")

print "Your name is:", name
print "You are " + age + " years old."

after_ten = int(age) + 10
print "You will be " + str(after_ten) + " years old after ten years."

对这段小程序中,有几点说明

前面演示了 print()的使用,除了打印一个字符串之外,还可以打印字符串拼接结果。

print "You are " + age + " years old."

注意,那个变量 age 必须是字符串,如最后的那个语句中:

print "You will be " + str(after_ten) + " years old after ten years."

这句话里面,有一个类型转化,将原本是整数型 after_ten 转化为了 str 类型。否则,就包括,不信,你可以试试。

同样注意,在 after_ten = int(age) + 10 中,因为通过 raw_input 得到的是 str 类型,当 age 和 10 求和的时候,需要先用 int()函数进行类型转化,才能和后面的整数 10 相加。

这个小程序,是有点综合的,基本上把已经学到的东西综合运用了一次。请看官调试一下,如果没有通过,仔细看报错信息,你能够从中获得修改方向的信息。

原始字符串
所谓原始字符串,就是指字符串里面的每个字符都是原始含义,比如反斜杠,不会被看做转义符。如果在一般字符串中,比如

>>> print "I like \npython"
I like 
python

这里的反斜杠就不是“反斜杠”的原始符号含义,而是和后面的 n 一起表示换行(转义了)。当然,这似乎没有什么太大影响,但有的时候,可能会出现问题,比如打印 DOS 路径(DOS,有没有搞错,现在还有人用吗?)

>>> dos = "c:\news"
>>> dos
&#39;c:\news&#39;  # 这里貌似没有什么问题
>>> print dos # 当用 print 来打印这个字符串的时候,就出问题了。
c:
ews

如何避免?用前面讲过的转义符可以解决:

>>> dos = "c:\\news"
>>> print dos
c:\news

此外,还有一种方法,如:

>>> dos = r"c:\news"
>>> print dos
c:\news
>>> print r"c:\news\python"
c:\news\python

状如 r"c:\news",由 r 开头引起的字符串,就是原始字符串,在里面放任何字符都表示该字符的原始含义。

这种方法在做网站设置网站目录结构的时候非常有用。使用了原始字符串,就不需要转义了。

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Grundkenntnisse über String-Typen in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn