您好,登錄后才能下訂單哦!
字符串是 Python 中最常用的數(shù)據(jù)類型。我們可以使用引號('或")來創(chuàng)建字符串。創(chuàng)建字符串很簡單,只要為變量分配一個值即可。在python中,單個的字符也算作是字符串,并沒有像c、java中的字符類型。
在最新的Python 3版本中,字符串是以Unicode編碼的,也就是說,Python的字符串支持多語言。
舉栗子:
astr = '字符串a(chǎn)aa'
bstr = "abcd123"
cstr = 's' #單個字符也是字符串。
python三引號允許一個字符串跨多行,字符串中可以包含換行符、制表符以及其他特殊字符。
>>> s = '''
... 這是第一行 \n
... abc\tcde
... 第三行
... '''
>>> print(s)
這是第一行
abc cde
第三行
>>>
對于單個字符的編碼,Python提供了ord()函數(shù)獲取字符的unicode編碼,而chr()函數(shù)則是把編碼轉(zhuǎn)換為對應(yīng)的字符:
>>> ord('a')
97
>>> ord('中')
20013
>>> chr(99)
'c'
>>> chr(20013)
'中'
>>>
函數(shù)不能處理多個字符,會報錯:
>>> ord('ab')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: ord() expected a character, but string of length 2 found
>>>
所以在寫字符串的時候,我們?nèi)绻浪膗nicode編碼,還可以用16進(jìn)制寫字符串:
>>> '\u4e2d\u6587'
'中文'
但是在實際書寫代碼時,不是特殊需要,應(yīng)該沒有人會這么寫~
在需要在字符中使用特殊字符時,python用反斜杠(\)轉(zhuǎn)義字符。但%例外,它需要用它自己來轉(zhuǎn)義。
轉(zhuǎn)義符號 | 描述 | 實例 |
---|---|---|
\ | (在行尾時) | 續(xù)行符 |
\\ | 反斜杠符號\ | * |
\' | 單引號' | * |
\" | 雙引號" | * |
\a | 響鈴 | * |
\b | 退格(Backspace) | * |
\e | 轉(zhuǎn)義 | * |
\000 | 空 | * |
\n | 換行 | * |
\v | 縱向制表符 | * |
\t | 橫向制表符 | * |
\r | 回車 | * |
\f | 換頁 | * |
\oyy | 八進(jìn)制數(shù),yy代表的字符 | 例如:\o12代表換行 |
\xyy | 十六進(jìn)制數(shù),yy代表的字符 | 例如:\x0a代表換行 |
%% | %符號 | * |
\其他符號 | 其它的字符以普通格式輸出 | * |
設(shè)定字符串a(chǎn)="hello",b=pytho
符號 | 描述 | 示例 |
---|---|---|
+ | 字符串連接 | a + b 輸出結(jié)果: hellopython |
* | 重復(fù)輸出字符串 | a*2 輸出結(jié)果:hellohello |
[] | 通過索引獲取字符串中字符 | a[1] 輸出結(jié)果 e |
[ : ] | 截取字符串中的一部分 | a[1:4] 輸出結(jié)果 ell |
in | 成員運(yùn)算符 - 如果字符串中包含給定的字符返回 True 'H' in a 輸出結(jié)果 True | * |
not in | 成員運(yùn)算符 - 如果字符串中不包含給定的字符返回 True 'M' not in a 輸出結(jié)果 True | * |
r/R | 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思來使用,沒有轉(zhuǎn)義特殊或不能打印的字符。 | 原始字符串除在字符串的第一個引號前加上字母 r(可以大小寫)以外,與普通字符串有著幾乎完全相同的語法。 |
>>> a='hello'
>>> b='python'
>>> print(a+b)
hellopython
>>> print(a*2)
hellohello
>>> print(a[0],a[1])
h e
>>> print(a[0:4])
hell
>>> 'e' in a
True
>>> 'p' not in a
True
>>> print('a\nb')
a
b
>>> print(r'a\nb')
a\nb
>>> print(R'a\nb')
a\nb
>>>
設(shè)定字符串a(chǎn) = "hello"
(1).正向索引
>>> a[0]
'h'
>>> a[2]
'l'
>>> a[4]
'o'
>>>
(2).反向索引
>>> a[-1]
'o'
>>> a[-2]
'l'
>>> a[-3]
'l'
>>>
切片語法格式:
s[start:end:step] # 從start位置開始到end-1位置結(jié)束, 步長為step;
- 如果start省略, 則從頭開始切片;
- 如果end省略, 一直切片到字符串最后;
舉栗子:設(shè)定字符串s = 'hellopython'
s[1:] #從第2個字符到末尾,結(jié)果為:‘ellopython'
s[:-1] #從第1個字符到倒數(shù)第2個,結(jié)果為:‘hellopytho'
s[::-1] # 對于字符串進(jìn)行反轉(zhuǎn),結(jié)果為:‘nohtypolleh'
s[:] # 對于字符串拷貝,結(jié)果為:‘hellopython'
判斷一個字符串是否是回文數(shù)。回文數(shù)是指正序(從左向右)和倒序(從右向左)讀都是一樣的字符串。
num = input('輸入待判斷的字符串:')
print(num == num[::-1])
符號:in與not in
舉栗子:設(shè)定字符串s = "hello"
>>> 'h' in s
True
>>> 'hel' in s
True
>>> 'oo' in s
False
>>> 'h' not in s
False
>>> 'oo' not in s
True
>>>
連接符號:+
舉栗子:a = "hello" b = "python"
>>> print("%s %s" %(a, b))
hello python
>>> a + b
'hellopython'
>>> a + " " +b
'hello python'
>>>
符號:*
舉栗子:s='123'
>>> print(s*3)
123123123
>>> print("*"*10 + "我在20個*的中間" + "*"*10)
**********我在20個*的中間**********
>>>
方法 | 描述 |
---|---|
len(string) | 返回字符串長度 |
capitalize() | 將字符串的第一個字符轉(zhuǎn)換為大寫 |
replace(str1, str2 [, max]) | 把 將字符串中的 str1 替換成 str2,如果 max 指定,則替換不超過 max 次。 |
split(str="", num=string.count(str)) | num=string.count(str)) 以 str 為分隔符截取字符串,如果 num 有指定值,則僅截取 num 個子字符串 |
center(width, fillchar) | 返回一個指定的寬度 width 居中的字符串,fillchar 為填充的字符,默認(rèn)為空格。 |
count(str, beg= 0,end=len(string)) | 返回 str 在 string 里面出現(xiàn)的次數(shù),如果 beg 或者 end 指定則返回指定范圍內(nèi) str 出現(xiàn)的次數(shù) |
find(str, beg=0 end=len(string)) | 檢測 str 是否包含在字符串中,如果指定范圍 beg 和 end ,則檢查是否包含在指定范圍內(nèi),如果包含返回開始的索引值,否則返回-1 |
rfind(str, beg=0,end=len(string)) | 類似于 find()函數(shù),不過是從右邊開始查找. |
index(str, beg=0, end=len(string)) | 跟find()方法一樣,只不過如果str不在字符串中會報一個異常. |
rindex( str, beg=0, end=len(string)) | 類似于 index(),不過是從右邊開始. |
startswith(str, beg=0,end=len(string)) | 檢查字符串是否是以 obj 開頭,是則返回 True,否則返回 False。如果beg 和 end 指定值,則在指定范圍內(nèi)檢查。 |
endswith(suffix, beg=0,end=len(string)) | 檢查字符串是否以 obj 結(jié)束,如果beg 或者 end 指定則檢查指定的范圍內(nèi)是否以 obj 結(jié)束,如果是,返回 True,否則返回 False. |
max(str) | 返回字符串 str 中最大的字母。 |
min(str) | 返回字符串 str 中最小的字母。 |
expandtabs(tabsize=8) | 把字符串 string 中的 tab 符號轉(zhuǎn)為空格,tab 符號默認(rèn)的空格數(shù)是 8 。 |
lower() | 轉(zhuǎn)換字符串中所有大寫字符為小寫. |
upper() | 轉(zhuǎn)換字符串中的小寫字母為大寫 |
swapcase() | 將字符串中大寫轉(zhuǎn)換為小寫,小寫轉(zhuǎn)換為大寫 |
title() | 返回"標(biāo)題化"的字符串,就是說所有單詞都是以大寫開始,其余字母均為小寫(見 istitle()) |
isalnum() | 如果字符串至少有一個字符并且所有字符都是字母或數(shù)字則返 回 True,否則返回 False |
isalpha() | 如果字符串至少有一個字符并且所有字符都是字母則返回 True, 否則返回 False |
isdigit() | 如果字符串只包含數(shù)字則返回 True 否則返回 False.. |
islower() | 如果字符串中包含至少一個區(qū)分大小寫的字符,并且所有這些(區(qū)分大小寫的)字符都是小寫,則返回 True,否則返回 False |
isnumeric() | 如果字符串中只包含數(shù)字字符,則返回 True,否則返回 False |
isspace() | 如果字符串中只包含空白,則返回 True,否則返回 False. |
istitle() | 如果字符串是標(biāo)題化的(見 title())則返回 True,否則返回 False |
isupper() | 如果字符串中包含至少一個區(qū)分大小寫的字符,并且所有這些(區(qū)分大小寫的)字符都是大寫,則返回 True,否則返回 False |
join(seq) | 以指定字符串作為分隔符,將 seq 中所有的元素(的字符串表示)合并為一個新的字符串 |
ljust(width[, fillchar]) | 返回一個原字符串左對齊,并使用 fillchar 填充至長度 width 的新字符串,fillchar 默認(rèn)為空格。 |
lstrip() | 截掉字符串左邊的空格或指定字符。 |
rstrip() | 刪除字符串字符串末尾的空格. |
rjust(width,[, fillchar]) | 返回一個原字符串右對齊,并使用fillchar(默認(rèn)空格)填充至長度 width 的新字符串 |
splitlines([keepends]) | 按照行('\r', '\r\n', \n')分隔,返回一個包含各行作為元素的列表,如果參數(shù) keepends 為 |
strip([chars]) | 在字符串上執(zhí)行 lstrip()和 rstrip() |
zfill (width) | 返回長度為 width 的字符串,原字符串右對齊,前面填充0 |
isdecimal() | 檢查字符串是否只包含十進(jìn)制字符,如果是返回 true,否則返回 false。 |
(2017-小米-句子反轉(zhuǎn))
給定一個句子(只包含字母和空格), 將句子中的單詞位置反轉(zhuǎn),單詞用空格分割, 單詞之間只有一個空格,前>后沒有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello”
輸入數(shù)據(jù)有多組,每組占一行,包含一個句子(句子長度小于1000個字符)
輸出描述:
對于每個測試示例,要求輸出句子中單詞反轉(zhuǎn)后形成的句子
while True:
s=input('\n輸入待反轉(zhuǎn)句子:')
t=s.split(' ')
t=t[::-1]
for i in t:
print(i+' ',end='')
if not s:
break
一句話:
print("".join(input().split(' ')[::-1]))
參考文章:
菜鳥教程python3:字符串
廖雪峰python:字符串與編碼
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。