数据类型 -- String(字符串)

Python中字符串用单引号 ' 或双引号 " 括起来,使用反斜杠 \ 转义特殊字符。
Python不支持单字符类型,单个字符就是长度为1的字符串。
Python3中,所有的字符串都是Unicode字符串。

创建字符串
var1 = 'Hello World!'
var2 = "Neuedu"
使用字符串
  • 访问单个字符,使用 变量 [ 索引值 ]
  • 截取子串,使用 变量 [ 头下标 : 尾下标 ]
  • 重复字符串,使用 变量 * 次数
  • 连接字符串,使用 变量 + 变量 [ + 变量 ... ]

说明:

  • 使用索引值可以访问字符串中的单个字符,索引值从0 ~ length-1,超出范围会报错。
  • 使用头下标和尾下标可以截取部分字符串,范围是头下标 ~ 尾下标-1,超出范围返回空串。
str = 'Neuedu'

>>> print (str)          # 所有字符串
Neuedu
>>> print (str[:])       # 所有字符串
Neuedu
>>> print (str[0])       # 第1个字符
N
>>> print (str[-1])       # 倒数第1个字符
u
>>> print (str[2:5])     # 第3个 ~ 第5个字符
ued
>>> print (str[2:])      # 第3个 ~ 所有字符
uedu
>>> print (str[:3])      # 第1个 ~ 第3个字符
Neu
>>> print (str[0:-1])    # 第1个 ~ 倒数第2个字符
Neued
>>> print (str[-1:-2])    # 空字符

>>> print (str[-4:-2])    # 倒数第4个 ~ 倒数第3个字符
ue
>>> print (str * 2)      # 字符串重复两次
NeueduNeuedu
>>> print (str + "TEST") # 连接字符串
NeueduTEST

使用反斜杠 \ 转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个r,表示原始字符串

>>> print('XXX\nYYY')
XXX
YYY
>>> print(r'XXX\nYYY')
XXX\nYYY
>>> 

注意:

  • 字符串不能改变,向一个索引位置赋值,比如str[2] = 'U'会导致错误
>>> str = 'Neuedu'
>>> str[2] = 'U'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
字符串运算符

a = 'Hello'       b = 'Python'

操作符 描述 实例
+ 字符串连接 a + b 输出结果: HelloPython
* 重复输出字符串 a*2 输出结果:HelloHello
in 成员运算符
字符串中包含给定的字符返回 True
'H' in a 输出结果 True
not in 成员运算符
字符串中不包含给定的字符返回 True
'M' not in a 输出结果 True
字符串格式化
print("格式串" % 变量1)
print("格式串" % (变量1, 变量2...))

带有占位符的字符串称为 格式串

占位符 替换内容
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数
%e 科学计数法表示浮点数
%% 输出 %
>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'

在占位符中使用数字限制位宽,位数不足时用空格(默认)或 0 进行填充

>>> "我的学号是 %06d" % 9527
'我的学号是 009527'
>>> "苹果单价 %.02f 元/斤" % 5.123
'苹果单价 5.12 元/斤'
>>> "购买 %.03f 斤" % 4.5
'购买 4.500 斤'
>>> "数据比例是 %.02f%%" % 10
'数据比例是 10.00%'
>>> "数据比例是 %5.2f" % 1.2345
'数据比例是  1.23'
>>> "数据比例是 %05.2f" % 1.2345
'数据比例是 01.23'

使用三引号 ''' 允许一个字符串跨行、包含换行符、制表符以及其他特殊字符。

>>> para_str = """这是一个多行字符串的实例
... 多行字符串可以使用制表符TAB ( \t )。
... 也可以使用换行符 [ \n ]。
... """
>>> print (para_str)

这是一个多行字符串的实例
多行字符串可以使用制表符TAB (    )。
也可以使用换行符 [
 ]。
  • 三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的。
  • 一个典型的用例是,当你需要一块HTML或者SQL时,这时用字符串组合,特殊字符串转义将会非常的繁琐。
errHTML = '''
<HTML><HEAD><TITLE>
Friends CGI Demo</TITLE></HEAD>
<BODY><H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=Back
ONCLICK="window.history.back()"></FORM>
</BODY></HTML>
'''
cursor.execute('''
CREATE TABLE users (  
login VARCHAR(8), 
uid INTEGER,
prid INTEGER)
''')
字符串内置函数
  • len(string) 返回字符串长度
>>> len('abcdef')
6
>>> len('中文')
2
字符串对象方法
  • upper() 转换字符串中的小写字母为大写
  • lower() 转换字符串中所有大写字符为小写
  • isdigit()如果字符串只包含数字则返回 True 否则返回 False
  • join(str) 以指定字符分隔str字符串
  • split(str) 用str指定的字符来产生一个列表
>>> 'abcdef'.upper()
'ABCDEF'
>>> 'ABCDEF'.lower()
'abcdef'
>>> '12345'.isdigit()
True

>>> '-'.join('abcde')
'a-b-c-d-e'

>>> "this is string example".split(' ')
['this', 'is', 'string', 'example']
字符编码
  • 计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。
  • 由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122
  • 之后,为处理各自国家的文字,产生了不同的编码,中国制定了GB2312编码,日本用Shift_JIS编码,韩国用Euc-kr编码等,各种标准的冲突,使得在多语言混合的文本中经常出现乱码。
  • 因此,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
  • ASCII编码是1个字节,而Unicode编码通常是2个字节。
  • 为了节省空间,出现了UTF-8编码。UTF-8根据不同字符编码成1-6个字节,英文字母占1个字节,汉字通常占3个字节,生僻字符占4-6个字节。
字符 ASCII Unicode UTF-8
A 01000001 00000000 01000001 01000001
x 01001110 00101101 11100100 10111000 10101101




- end -

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,454评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,553评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,921评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,648评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,770评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,950评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,090评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,817评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,275评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,592评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,724评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,409评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,052评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,815评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,043评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,503评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,627评论 2 350

推荐阅读更多精彩内容