我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python中的字符串类型基本知识学习教程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python中的字符串类型基本知识学习教程

如果对自然语言分类,有很多中分法,比如英语、法语、汉语等,这种分法是最常见的。在语言学里面,也有对语言的分类方法,比如什么什么语系之类的。我这里提出一种分法,这种分法尚未得到广大人民群众和研究者的广泛认同,但是,我相信那句“真理是掌握在少数人的手里”,至少在这里可以用来给自己壮壮胆。

我的分法:一种是语言中的两个元素(比如两个字)拼接在一起,出来一个新的元素(比如新的字);另外一种是两个元素拼接在一起,只是得到这两个元素的并列显示。比如“好”和“人”,两个元素拼接在一起是“好人”,而 3 和 5 拼接(就是整数求和)在一起是 8,如果你认为是 35,那就属于第二类了。

把我的这种分法抽象一下:

一种是:△ + □ = ○
另外一种是:△ + □ = △ □
我们的语言中,离不开以上两类,不是第一类就是第二类。

太天才了。请鼓掌。

字符串
在我洋洋自得的时候,我 google 了一下,才发现,自己没那么高明,看维基百科的字符串词条是这么说的:

字符串(String),是由零个或多个字符组成的有限串行。一般记为 s=a[1]a[2]...a[n]。
看到维基百科的伟大了吧,它已经把我所设想的一种情况取了一个形象的名称,叫做字符串,本质上就是一串字符。

根据这个定义,在前面两次让一个程序员感到伟大的"Hello,World",就是一个字符串。或者说不管用英文还是中文还是别的某种文,写出来的文字都可以做为字符串对待,当然,里面的特殊符号,也是可以做为字符串的,比如空格等。

严格地说,在 Python 中的字符串是一种对象类型,这种类型用 str 表示,通常单引号''或者双引号""包裹起来。

字符串和前面讲过的数字一样,都是对象的类型,或者说都是值。当然,表示方式还是有区别的。


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

从这两个例子中可以看出来,不论使用单引号还是双引号,结果都是一样的。


>>> 250
250
>>> type(250)
<type 'int'>

>>> "250"
'250'
>>> type("250")
<type 'str'>

仔细观察上面的区别,同样是 250,一个没有放在引号里面,一个放在了引号里面,用 type()函数来检验一下,发现它们居然是两种不同的对象类型,前者是 int 类型,后者则是 str 类型,即字符串类型。所以,请大家务必注意,不是所有数字都是 int(or float),必须要看看,它在什么地方,如果在引号里面,就是字符串了。如果搞不清楚是什么类型,就让 type()来帮忙搞定。

操练一下字符串吧。


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

在 print 后面,打印的都是字符串。注意,是双引号里面的,引号不是字符串的组成部分。它是在告诉计算机,它里面包裹着的是一个字符串。

爱思考的看官肯定发现上面这句话有问题了。如果我要把下面这句话看做一个字符串,应该怎么做?

What's your name?
这个问题非常好,因为在这句话中有一个单引号,如果直接在交互模式中像上面那样输入,就会这样:


>>> 'What's your name?'
File "<stdin>", line 1
 'What's your name?'
  ^
SyntaxError: invalid syntax

出现了 SyntaxError(语法错误)引导的提示,这是在告诉我们这里存在错误,错误的类型就是 SyntaxError,后面是对这种错误的解释“invalid syntax”(无效的语法)。特别注意,错误提示的上面,有一个 ^ 符号,直接只着一个单引号,不用多说,你也能猜测出,大概在告诉我们,可能是这里出现错误了。

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

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


>>> "What's your name?"
"What's your name?"

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

解决方法二:使用转义符

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


>>> 'What's your name?'
"What's your name?"

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

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

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


>>> a = 5
>>> a
5

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

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


>>> b = "hello,world"
>>> b
'hello,world'
>>> print b
hello,world

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


>>> type(a)
<type 'int'>
>>> type(b)
<type 'str'>

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

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

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


>>> "Py" + "thon"
'Python'

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


>>> "Py" - "thon"  # 这么做的人,是脑袋进水泥了吧?

Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'str' and 'str'

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


>>> a = 1989
>>> b = "free"
>>> print b+a

Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' 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 'str'>
>>> b = int(a)
>>> b
250
>>> type(b)
<type 'int'>

提醒列位,如果你对 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 转义 00 空 n 换行 v 纵向制表符 t 横向制表符 r 回车 f 换页 oyy 八进制数,yy 代表的字符,例如:o12 代表换行 xyy 十六进制数,yy 代表的字符,例如:x0a 代表换行 other 其它的字符以普通格式输出
以上所有转义符,都可以通过交互模式下 print 来测试一下,感受实际上是什么样子的。例如:


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

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

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


>>> raw_input("input your name:")
input your name:python
'python'

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


>>> name = raw_input("input your name:")
input your name:python
>>> name
'python'
>>> type(name)
<type 'str'>

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


>>> age = raw_input("How old are you?")
How old are you?10
>>> age
'10'
>>> type(age)
<type 'str'>

返回的结果,仍然是 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
'c:news'  # 这里貌似没有什么问题
>>> print dos # 当用 print 来打印这个字符串的时候,就出问题了。
c:
ews

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


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

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


>>> dos = r"c:news"
>>> print dos
c:news
>>> print r"c:newspython"
c:newspython

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

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python中的字符串类型基本知识学习教程

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python中的字符串类型基本知识学习教程

如果对自然语言分类,有很多中分法,比如英语、法语、汉语等,这种分法是最常见的。在语言学里面,也有对语言的分类方法,比如什么什么语系之类的。我这里提出一种分法,这种分法尚未得到广大人民群众和研究者的广泛认同,但是,我相信那句“真理是掌握在少数
2022-06-04

Python学习教程:数据类型—字符串大总结

Python学习教程:数据类型—字符串大总结1. Python字符串的创建字符串是Python中最常见的数据类型,通常使用单引号或双引号来定义一个字符串,如下:str = "我是字符串"str1 = 我也是字符串python中单引号和双引号
2023-06-02

Python编程中字符串和列表的基本知识讲解

Python 字符串 字符串是 Python 中最常用的数据类型。我们可以使用引号来创建字符串。 创建字符串很简单,只要为变量分配一个值即可。例如:var1 = 'Hello World!' var2 = "Python Programmi
2022-06-04

Python基础学习教程:Python基础之基本数据类型(一)

Python基础学习教程:Python基础之基本数据类型(一)
2023-06-02

Redis中的动态字符串学习教程

sds 的用途 Sds 在 Redis 中的主要作用有以下两个: 实现字符串对象(StringObject); 在 Redis 程序内部用作 char* 类型的替代品; 以下两个小节分别对这两种用途进行介绍。 实现字符串对象 Redis 是
2022-06-04

Python学习教程:给定一个字符串,逐个翻转字符串中的每个单词

本期跟大家分享的Python学习教程是翻转字符串中的单词,有兴趣的伙伴,可以进来学习啦!
2023-06-02

Python学习教程:在字符串的开头和结尾处做文本匹配

Python学习教程:在字符串的开头和结尾处做文本匹配我们需要在字符串的开头和结尾处按照指定的文本模式做检查,例如检查文件的扩展名、URL协议类型等。
2023-06-02

Python中基本的日期时间处理的学习教程

Python程序能用很多方式处理日期和时间。转换日期格式是一个常见的例行琐事。Python有一个 time 和 calendar 模组可以帮忙。 什么是Tick? 时间间隔是以秒为单位的浮点小数。 每个时间戳都以自从1970年1月1日午夜(
2022-06-04

在学习Python之前,你需要掌握哪些基本的编程知识?

学习Python之前,你需要具备哪些基本的编程基础?Python是一种流行的高级编程语言,被广泛应用于数据科学、人工智能、Web开发等领域。它的简洁语法和丰富的生态系统使得Python成为了许多人入门编程的首选语言。然而,在学习Pytho
在学习Python之前,你需要掌握哪些基本的编程知识?
2024-01-13

简单讲解Python中的数字类型及基本的数学计算

Python有四种类型的数字: 1.整型 a = 2 print a 2.长整型 b = 123456789 print b 3.浮点数 c = 3.2E2 print c 4.复数 复数为实数的推广,它使任一多项式都有根。复数
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录