python:字符串

  • 字符串是由字符組成的序列(sequnence),所以它是有序的。
可以用括號運算符-[ ]-中括號來訪問元素,與c/c++一樣,但是matlab訪問元素的符號是小括號-().
括號中的表達式叫做索引(index),和c/c++一樣,索引是從0開始的。因爲索引表示的是從字符串七點開始的位移量(offset)。當然,索引值都是整數,否則會出錯。
TypeError: string indices must be integers

  • 獲取最後一個字符
len不是字符串的方法,而是一個內建函數,這一點請注意。
使用len,可以輕鬆得到字符串中最後一個字符
letter=word(len(word)-1)#但是記得減一,原因如上所述
或者使用負索引
last=word[-1]#返回最後一個字符,-2表示返回倒數第二個字符
使用負索引的時候,從-1到第一個字符,則索引的絕對值正好是從1到 字符串的長度。其實這個就比較好理解了。


  • 遍歷的話,既可以用while 也可以用for,for比較好用。

  • 字符串切片(slice):切片表示的都是複製
切片指的就是字符串的一個片段,所以選擇一個切片的操作類似選擇一個字符:

[n:m]操作符返回從第n個字符到第m個字符的字符串片段,(請注意這裏的第幾個,是從0開始算的)包括第一個,但是不包括最後一個。 這個行爲違反直覺,但是將指向兩個字符之間的索引, 想象成 下圖那樣或許有幫助。

圖8-1:切片索引

由於不包括最後一個,但是又由於計數從0開始。所以一個切片【n:m】一共切了m-n個字符。如果第一個索引大於或等於第二個,結果是空字符(empty string)。
【:】表示賦值所有。
另外字符串切片可以接受制定步長的第三個索引
步長爲-1就是從單詞的尾部開始進行,所以切片[::-1]就會生成一個倒敘的字符串。這一點很有用啊。
>>> fruit = 'banana'
>>> fruit[0:5:2]
'bnn'
>>> 'word'[::-1]
'drow'

  • 字符串是不可變的
所以你不能用索引和賦值語句進行修改。這意味着你不能改變一個已經存在的字符串,你最多隻能創建一個新的字符串,在原有字符串的基礎上略有不同。
word='hi girlfriend!'
word[4]='v'

TypeError: 'str' object does not support item assignment

  • 搜索(search):
遍歷一個序列並在找到尋找的東西時返回,使用return語句,找到了就打破循環,馬上返回。稍加改變就可以變爲計數器。

word = 'banana'
count = 0
for letter in word:
    if letter == 'a':
        count = count + 1
print(count)

  • 字符串方法

方法和函數類似,接受實參並且返回一個值,但是語法不同,

.upper()

>>> word = 'banana'
>>> new_word = word.upper()
>>> new_word
'BANANA'

.lower()


使用的不是函數語法 upper(word) , 而是方法的語法 word.upper() 。返回一個都是大寫字母的新字符串。用點標記的形式支出方法的名字。空括號表示不接受實參

.find('~')

>>> word = 'banana'
>>> index = word.find('a')
>>> index
1

>>> word.find('na')
2


find不僅可以查找單個字符,還可以查找子串;find默認從字符串的首字母開始查找,他還可以接受第二個參數,即從何處開始搜索,當然這是一個可選的參數,相對應也可以接受第三個參數,表示結束查找的索引位置。

.count

bytes.count(sub[start[end]])bytearray.count(sub[start[end]])

Return the number of non-overlapping occurrences of subsequence sub in the range [startend]. Optional arguments start and end are interpreted as in slice notation.

'www.baidu.com'.count('w')
3

The subsequence to search for may be any bytes-like object or an integer in the range 0 to 255.

Changed in version 3.3: Also accept an integer in the range 0 to 255 as the subsequence.

.strip---去掉頭尾指定的字符串

strip()方法語法:

str.strip([chars]);
  • chars -- 移除字符串頭尾指定的字符。

返回移除字符串頭尾指定的字符生成的新字符串。



.split---分隔

split()方法語法:

str.split(str="", num=string.count(str)).
  • str -- 分隔符,默認爲所有的空字符,包括空格、換行(\n)、製表符(\t)等。
  • num -- 分割次數。

返回分割後的字符串列表。



.replace

bytes.replace(oldnew[count])bytearray.replace(oldnew[count])

Return a copy of the sequence with all occurrences of subsequence oldreplaced by new. If the optional argument count is given, only the first count occurrences are replaced.

The subsequence to search for and its replacement may be any bytes-like object.

Note

 

The bytearray version of this method does not operate in place - it always produces a new object, even if no changes were made.



  • in運算符
單詞in是一個布爾運算符,接受兩個字符串,如果第一個作爲子串出現在第二個中,則返回True
>>> 'a' in 'banana'
True
>>> 'seed' in 'banana'
False

  • 字符串比較
關係運算符也適用於字符串。
== 檢查兩個字符串是否相等

'apple'<'banada'
True
'banada'<'apple'
False
'Banada'<'apple'
True
< 、>對於按字母順序放置單詞也很有用。另外請注意,python處理大小寫的方式和人是不同的,所有的大寫字母出現在所有小寫字母之前。

  • 文字遊戲
open是一個內建函數,接受一個文件名作爲形參,並且返回一個文件對象(file object),文件對象代表打開文件的變量。
>>> fin = open('words.txt')

fin是輸入文件對象的一個常用名。該文件對象提供了幾個讀取方法, 包括 readline ,其從文件中讀取字符直到碰到新行,並將結果作爲字符串返回:

>>> fin.readline()
'aa\r\n'

此文件對象跟蹤它在文件中的位置, 所以如果你再次調用readline,你獲得下一個單詞:

>>> fin.readline()
'aah\r\n'

你也可以將文件對象用做for循環的一部分。 此程序讀取 words.txt 並打印每個單詞,每行一個:

fin = open('words.txt')
for line in fin:
    word = line.strip()#strip是字符串方法,去掉空格
    print(word)








































發佈了25 篇原創文章 · 獲贊 8 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章