溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Pyton學(xué)習(xí)—字符串

發(fā)布時間:2020-02-25 15:04:23 來源:網(wǎng)絡(luò) 閱讀:600 作者:長安223 欄目:編程語言

1.Python中的字符串

字符串是 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)該沒有人會這么寫~

2.Python轉(zhuǎn)義字符

在需要在字符中使用特殊字符時,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代表換行
%% %符號 *
\其他符號 其它的字符以普通格式輸出 *

3.Python字符串運(yùn)算符

設(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
>>> 

4.字符串的特性

1.索引

設(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'
>>>
2.切片

切片語法格式:

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])
3.成員操作符

符號: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
>>> 
4.字符串連接

連接符號:+
舉栗子:a = "hello" b = "python"

>>> print("%s %s" %(a, b))
hello python
>>> a + b
'hellopython'
>>> a + " " +b
'hello python'
>>> 
5.字符串的重復(fù)

符號:*
舉栗子:s='123'

>>> print(s*3)
123123123
>>> print("*"*10 + "我在20個*的中間" + "*"*10)
**********我在20個*的中間**********
>>> 

5.字符串常用函數(shù)

方法 描述
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)后形成的句子

  • 示例1:
    輸入
    hello xiao mi
    輸出
    mi xiao hello
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:字符串與編碼

向AI問一下細(xì)節(jié)

免責(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)容。

AI