codecamp

Python 处理字串资料

什么是字串?

Python 使用变数章节中,我们使用了 input 函式来读取使用者的输入,而 input 函式可以传入一个 字串 作为显示在屏幕上的提示讯息。字串资料可以是以单引号(')或双引号(")包起来的 文字资料 ,相对于数值资料,字串就是用来表示文字的资料。

字串资料也可以储存于变数中:

x = 'Hello, world'
print x

单引号及双引号

在 Python 中,使用单引号(')或双引号(")包起来的资料都是字串。然而,以单引号包起来的字串,如果在字串资料中遇到单引号时,则必须以 \ 来跳脱(escape)处理,避免被误认为字串结束。

x = 'I\'m Eric.'
print x

这段程式码就会正确地印出 "I'm Eric.",以此类推,若是在双引号包起来的字串,碰到双引号时也必须以 \ 跳脱。也因为 \ 被用来作为跳脱字元处理,所以若是字串中有 \ 字元时,就需要再用一个 \ 跳脱:

file_path = 'C:\\Documents and Settings\\ericsk\\test.dat'
print file_path

这段程式码就会印出「C:\Documents and Settings\ericsk\test.dat」。如果不想将 \ 作为跳脱字元使用,可以在字串前加上 r 前置字元,上面的程式码就可以改成:

file_path = r'C:\Documents and Settings\ericsk\test.dat'
print file_path

效果也是一樣。

字串的运算

字串资料也支援下列几种运算方式:

字串相加

两个字串资料作相加(+)的运算,代表将两个字串资料串接起来:

x = 'Hello, '
y = 'World'
print x+y

这段程式码会印出 Hello, World

产生重复字串

字串资料可以与整数进行 * 的运算,这表示要将字串重复几次:

x = 'Cat'
print x * 3

这样屏幕会输出 CatCatCat

取出字串部份内容

想要取出字串部份的内容,不管是单一字元,或是一段范围的字串,可以使用 [] 运算子来操作:

x = 'Hello, World.'
print x[7]
print hello[0:6]

这段程式码会分别在屏幕上印出 "W" 及 "Hello,"。字串的索引位置是*从 0 开始,所以 x[7] 表示要取出 x 这个字串的*第8个字元,也就是 W;而取范围时只需要设定左边界及右边界,要注意的是,字串只会取至右边界前一个字元,并不包含右边界,于是 [0:6] 就是从第 1 个字元取到第 6 个字元,并不会包含 x[6]

[] 运算子的索引也可以使用负整数,也就是从字串最右边开始算索引:

x = 'Hello, World.'
print x[-2]
print x[4:-3]

则会印出 "d" 及 "o, Wor"。

计算字串长度

如果要计算字串的长度,直接使用 len() 函式就可以了。

x = 'Hello, World.'
print len(x)

就会在屏幕上印出 13

Unicode 字串

在 Python 2.x 版里,字串预设是以 ASCII 编码储存,如果要以 unicode 编码来储存字串,只需要在字串前面加上一个 u 作为前置字串:

x = u'Hi,\u0020Eric'
print x

这就会印出 "Hi, Eric"

Python 3 之后,字串预设都是以 unicode 储存

试试看

  • 试试看在字串中使用 \n\t 有什么效果。
  • u'Hi,\u0020Eric' 的字串长度为何?那 'Hi\nEric' 呢?

下一步

在取出部份字串时,我们使用了 [] 运算子来操作,这是把字串当作「一串文字」来看待,所以可以用索引的方式取出字串。在 Python 中有一个基本处理资料的结构--List,可以处理排列在一起的数值或文字资料,在下一章节中将会介绍如何使用 Python 中的 List 及 Tuple


Python 使用变数
Python 处理 List 及 Tuple 资料
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }