高見龍

iOS app/Ruby/Rails Developer & Instructor, 喜愛非主流的新玩具 :)

字串

最常用的資料型態

不管在哪種程式語言,字串大概都是使用量最大的資料型態。

單引號跟雙引號的差別?

其實沒什麼差別。

操作

接下來我們看一些常見的字串操作

字串替換

1
2
3
4
5
>>> "%s = %s" % ("eddie", "kao")
'eddie = kao'

>>> "my name is %(name)s" % {'name' : 'eddie'}
'my name is eddie'

字串格式化

1
2
3
4
5
6
7
8
>>> "my name is %10s" % "eddie"
'my name is      eddie'

>>> "my name is %-10%" % eddie"
'my name is eddie     '

>>> "the PI is %.3f" % 3.1415926
'the PI is 3.142'

len() 字串長度

1
2
3
>>> greeting = "hello, eddie"
>>> len(greeting)
12

算字串的長度,其實就是算有幾個字元..

字串的"運算"?

字串也可以用加號+跟乘號*,不過並不是真的像數字一樣的四則運算:

“+”(加號)

1
2
>>> print "eddie" + "kao"
eddiekao

“*”(乘號)

1
2
>>> print "eddie"*3
eddieeddieeddie

有人在嗎?

使用in語法,可以檢查該字串是否包含某個字元:

1
2
3
4
>>> "a" in "abcdefg"
True
>>> "x" in "abcdefg"
False

切割

split

1
2
3
>>> my_str = "xxx yyy zzz"
>>> my_str.split()
['xxx', 'yyy', 'zzz']

slice

1
2
3
4
5
6
7
8
9
10
11
12
>>> my_str = "abcdefg"
>>> print my_str[0]
a

>>> print my_str[-1]
g

>>> print my_str[1:4]
bcd

>>> print my_str[:-1]
abcdef

中文字元怎麼切? 怎麼算?

1
2
3
4
5
6
7
8
9
# encoding: utf-8
my_name = "高見龍"
my_name_unicode = u"高見龍"

print len(my_name)           # 9
print len(my_name_unicode)   # 3

for word in my_name_unicode:
  print word

注意到前面那個小寫的u嗎? 加上u表示這個字串是unicode的,這樣一來在算字數時候,每個中文字就會被當做一個字元來計算了。

Python的字串還有很多可以介紹的,不過因為我們主要的目的是Django,所以不會打算把所有的字串方法都一一介紹一次,更多細節,請見官網文件:http://docs.python.org/library/string.html (這是個重要的章節,為了你的將來,請一定要看!)

再來,我們來看看在Python的串列(List)..

Comments