<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      翻譯:《實(shí)用的Python編程》01_04_Strings

      目錄 | 上一節(jié) (1.3 數(shù)字) | 下一節(jié) (1.5 列表)

      1.4 字符串

      本節(jié)介紹處理文本的方法。

      表示字面量文本

      在程序中字符串字面量使用引號(hào)來(lái)書(shū)寫(xiě)。

      # 單引號(hào)(Single quote)
      a = 'Yeah but no but yeah but...'
      
      # 雙引號(hào)(Double quote)
      b = "computer says no"
      
      # 三引號(hào)(Triple quotes)
      c = '''
      Look into my eyes, look into my eyes, the eyes, the eyes, the eyes,
      not around the eyes,
      don't look around the eyes,
      look into my eyes, you're under.
      '''
      

      通常,字符串只能占一行。三引號(hào)捕獲在引號(hào)結(jié)束之前的所有文本,包含所有的格式。

      使用單引號(hào)(')和雙引號(hào)(“)沒(méi)有區(qū)別。但是,以什么樣的引號(hào)開(kāi)始字符串,必須以什么樣的引號(hào)結(jié)束字符串。

      字符串轉(zhuǎn)義碼

      轉(zhuǎn)義碼被用于表示控制字符和不能輕易在鍵盤(pán)上輸入的字符。以下是一些常見(jiàn)的轉(zhuǎn)義碼:

      '\n'      換行符(Line feed)
      '\r'      回車符(Carriage return)
      '\t'      制表符(Tab)
      '\''      字面量單引號(hào)(Literal single quote)
      '\"'      字面量雙引號(hào)(Literal double quote)
      '\\'      字面量反斜杠(Literal backslash)
      

      字符串表示

      字符串中的每個(gè)字符在內(nèi)部被存儲(chǔ)為所謂的 Unicode “代碼點(diǎn)(code-point)”,代碼點(diǎn)是一個(gè)整數(shù)。可以使用下列轉(zhuǎn)移序列指定確切的代碼點(diǎn) 。

      a = '\xf1'          # a = '?'
      b = '\u2200'        # b = '?'
      c = '\U0001D122'    # c = '??'
      d = '\N{FOR ALL}'   # d = '?'
      

      所有可用的字符碼請(qǐng)參考 Unicode 字符數(shù)據(jù)庫(kù)

      字符串索引

      可以像訪問(wèn)數(shù)組那樣訪問(wèn)字符串的單個(gè)字符。你可以使用從 0 開(kāi)始的整數(shù)索引,負(fù)索引指定相對(duì)于字符串尾部的位置。

      a = 'Hello world'
      b = a[0]          # 'H'
      c = a[4]          # 'o'
      d = a[-1]         # 'd' (end of string)
      

      你也可以指定一個(gè)索引范圍來(lái)切割或者選擇子串:

      d = a[:5]     # 'Hello'
      e = a[6:]     # 'world'
      f = a[3:8]    # 'lo wo'
      g = a[-5:]    # 'world'
      

      不包括結(jié)尾索引處的字符。缺失的索引假定為字符串的開(kāi)始或者結(jié)尾。

      字符串操作

      字符串的操作包括:拼接,長(zhǎng)度計(jì)算,成員判斷和復(fù)制。

      # Concatenation (+)
      a = 'Hello' + 'World'   # 'HelloWorld'
      b = 'Say ' + a          # 'Say HelloWorld'
      
      # Length (len)
      s = 'Hello'
      len(s)                  # 5
      
      # Membership test (`in`, `not in`)
      t = 'e' in s            # True
      f = 'x' in s            # False
      g = 'hi' not in s       # True
      
      # Replication (s * n)
      rep = s * 5             # 'HelloHelloHelloHelloHello'
      

      字符串的方法

      字符串具有對(duì)數(shù)據(jù)執(zhí)行各種操作的方法。

      示例:刪除開(kāi)頭或者結(jié)尾處的任何空白。

      s = '  Hello '
      t = s.strip()     # 'Hello'
      

      示例:大小寫(xiě)轉(zhuǎn)換。

      s = 'Hello'
      l = s.lower()     # 'hello'
      u = s.upper()     # 'HELLO'
      

      示例:文本替換。

      s = 'Hello world'
      t = s.replace('Hello' , 'Hallo')   # 'Hallo world'
      

      更多字符串方法:

      字符串具有各種各樣的方法用于測(cè)試和處理文本數(shù)據(jù)。

      下面是字符串方法的一小部分示例:

      s.endswith(suffix)     # Check if string ends with suffix
      s.find(t)              # First occurrence of t in s
      s.index(t)             # First occurrence of t in s
      s.isalpha()            # Check if characters are alphabetic
      s.isdigit()            # Check if characters are numeric
      s.islower()            # Check if characters are lower-case
      s.isupper()            # Check if characters are upper-case
      s.join(slist)          # Join a list of strings using s as delimiter
      s.lower()              # Convert to lower case
      s.replace(old,new)     # Replace text
      s.rfind(t)             # Search for t from end of string
      s.rindex(t)            # Search for t from end of string
      s.split([delim])       # Split string into list of substrings
      s.startswith(prefix)   # Check if string starts with prefix
      s.strip()              # Strip leading/trailing space
      s.upper()              # Convert to upper case
      

      字符串的可變性

      字符串是“不可變的”或者說(shuō)是只讀的。一旦創(chuàng)建,字符串的值就無(wú)法修改。

      >>> s = 'Hello World'
      >>> s[1] = 'a'
      Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      TypeError: 'str' object does not support item assignment
      >>>
      

      所有處理字符串?dāng)?shù)據(jù)的操作和方法始終會(huì)創(chuàng)建一個(gè)新的字符串。

      字符串轉(zhuǎn)換

      使用 str() 函數(shù)可以將任何值轉(zhuǎn)換為字符串。 str() 函數(shù)得到的結(jié)果是一個(gè)字符串,該字符串包含的文本與 print() 語(yǔ)句產(chǎn)生的文本相同。

      >>> x = 42
      >>> str(x)
      '42'
      >>>
      

      字節(jié)字符串

      通常,在底層 I/O 中會(huì)遇到 8 位字節(jié)的字符串(譯注:字節(jié)字符串),它是這樣寫(xiě)的:

      data = b'Hello World\r\n'
      

      通過(guò)把小寫(xiě)的 b 放到第一個(gè)引號(hào)之前來(lái)指定一個(gè)字節(jié)字符串而不是文本字符串(譯注:在字符串前面加 b 表示這是使用 ASCII 編碼的字節(jié)字符串)。大部分常用的文本字符串操作可應(yīng)用于字節(jié)字符串。

      len(data)                         # 13
      data[0:5]                         # b'Hello'
      data.replace(b'Hello', b'Cruel')  # b'Cruel World\r\n'
      

      字節(jié)字符串索引有點(diǎn)不同,因?yàn)樗祷氐氖钦麛?shù)形式的字節(jié)值:

      data[0]   # 72 (ASCII code for 'H')
      

      字節(jié)字符串與文本字符串之間的轉(zhuǎn)換:

      text = data.decode('utf-8') # bytes -> text
      data = text.encode('utf-8') # text -> bytes
      

      'utf-8' 這個(gè)參數(shù)指定了字符的編碼方式。其它常見(jiàn)的編碼方式有 'ascii''latin1'

      原始字符串

      原始字符串是未解釋的帶有反斜杠的字符串字面量。通過(guò)在原始引號(hào)之前添加 “r” 前綴來(lái)指定。

      >>> rs = r'c:\newdata\test' # Raw (uninterpreted backslash)
      >>> rs
      'c:\\newdata\\test'
      

      輸出的字符串是包含在引號(hào)里面的字面量文本,與輸入的文本完全相同。這在反斜杠有特殊意義的情況下很有用。例如:文件名、正則表達(dá)式等。

      f-Strings

      具有格式化表達(dá)式替換的字符串。

      >>> name = 'IBM'
      >>> shares = 100
      >>> price = 91.1
      >>> a = f'{name:>10s} {shares:10d} {price:10.2f}'
      >>> a
      '       IBM        100      91.10'
      >>> b = f'Cost = ${shares*price:0.2f}'
      >>> b
      'Cost = $9110.00'
      >>>
      

      注意: 這要求 Python 3.6 或者更新的版本. 格式化代碼的含義稍后介紹。

      練習(xí)

      在這些習(xí)題中,你將嘗試對(duì) Python 字符串類型進(jìn)行操作。你應(yīng)該在 Python 交互提示符下操作,在該提示符下可以輕松地查看到結(jié)果。重要提示:

      在應(yīng)該與解釋器進(jìn)行交互的習(xí)題中,
      >>> 當(dāng) Python 希望你輸入一個(gè)新的語(yǔ)句, 你將獲得一個(gè)解釋器提示符。習(xí)題中某些語(yǔ)句會(huì)跨越多行——要使這些語(yǔ)句執(zhí)行,你可能需要多按幾次回車鍵。提醒你,在做這些示例時(shí),請(qǐng)勿輸入 >>> 提示符。

      通過(guò)定義一個(gè)包含一系列股票代號(hào)的字符串開(kāi)始吧。字符串如下所示:

      >>> symbols = 'AAPL,IBM,MSFT,YHOO,SCO'
      >>>
      

      練習(xí) 1.13:提取單個(gè)字符和子串

      字符串是字符數(shù)組。嘗試提取一些字符:

      >>> symbols[0]
      ?
      >>> symbols[1]
      ?
      >>> symbols[2]
      ?
      >>> symbols[-1]        # Last character
      ?
      >>> symbols[-2]        # Negative indices are from end of string
      ?
      >>>
      

      在 Python 語(yǔ)言中,字符串是只讀的。

      嘗試通過(guò)將 symbols 字符串的第一個(gè)字符變?yōu)樾?xiě)字母 ‘a(chǎn)’ 來(lái)驗(yàn)證這一點(diǎn)。

      >>> symbols[0] = 'a'
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      TypeError: 'str' object does not support item assignment
      >>>
      

      練習(xí) 1.14:字符串拼接

      盡管字符串?dāng)?shù)據(jù)是只讀的,但是你始終可以將變量重新分配給新創(chuàng)建的字符串。

      嘗試下面的語(yǔ)句,該語(yǔ)句將一個(gè)新的股票代碼 “GOOG” 拼接到 symbols 字符串的末尾。

      >>> symbols = symbols + 'GOOG'
      >>> symbols
      'AAPL,IBM,MSFT,YHOO,SCOGOOG'
      >>>
      

      糟糕!這不是我們想要的。修改它使得變量 symbols 保存的值為 'AAPL,IBM,MSFT,YHOO,SCO,GOOG'

      >>> symbols = ?
      >>> symbols
      'AAPL,IBM,MSFT,YHOO,SCO,GOOG'
      >>>
      

      'HPQ' 添加到 symbols 字符串的前面:

      >>> symbols = ?
      >>> symbols
      'HPQ,AAPL,IBM,MSFT,YHOO,SCO,GOOG'
      >>>
      

      在這些示例中,表面上看起來(lái)原始字符串像正在被修改,明顯違反了字符串是只讀的。實(shí)際上不是這樣的。每次,這些操作都會(huì)創(chuàng)建一個(gè)全新的字符串。當(dāng)變量名 symbols 被重新分配,它會(huì)指向一個(gè)新創(chuàng)建的字符串。然后,舊的字符串被銷毀,因?yàn)樗辉俦皇褂昧恕?/p>

      練習(xí) 1.15:成員測(cè)試(子串測(cè)試)

      嘗試使用 in 操作符檢查子串。請(qǐng)?jiān)诮换ヌ崾痉聡L試這些操作。

      >>> 'IBM' in symbols
      ?
      >>> 'AA' in symbols
      True
      >>> 'CAT' in symbols
      ?
      >>>
      

      為什么檢查 AA 的時(shí)候返回 True ?

      練習(xí) 1.16:字符串方法

      在 Python 交互提示符下,嘗試一些新的字符串方法。

      >>> symbols.lower()
      ?
      >>> symbols
      ?
      >>>
      

      請(qǐng)記住,字符串始終是只讀的。如果你想要保存操作的結(jié)果,你需要把它放置到一個(gè)變量中。

      >>> lowersyms = symbols.lower()
      >>>
      

      請(qǐng)嘗試更多的操作:

      >>> symbols.find('MSFT')
      ?
      >>> symbols[13:17]
      ?
      >>> symbols = symbols.replace('SCO','DOA')
      >>> symbols
      ?
      >>> name = '   IBM   \n'
      >>> name = name.strip()    # Remove surrounding whitespace
      >>> name
      ?
      >>>
      

      練習(xí) 1.17:f-strings

      有時(shí)你想創(chuàng)建一個(gè)字符串并把其它變量的值嵌入到其中。

      要做到這點(diǎn),可以使用 f-strings。示例:

      >>> name = 'IBM'
      >>> shares = 100
      >>> price = 91.1
      >>> f'{shares} shares of {name} at ${price:0.2f}'
      '100 shares of IBM at $91.10'
      >>>
      

      練習(xí) 1.10 中修改 mortgage.py 程序來(lái)使用 f-strings 創(chuàng)建它的輸出。

      嘗試實(shí)現(xiàn)它,使得輸出能夠很好地對(duì)齊。

      練習(xí) 1.18:正則表達(dá)式

      基本字符串操作的一個(gè)局限性在于它們不支持任何類型的高級(jí)模式匹配。為此,你需要使用 Python 的 re 模塊和正則表達(dá)式。正則表達(dá)式處理是一個(gè)大的主題,這里只是一個(gè)簡(jiǎn)短的示例:

      >>> text = 'Today is 3/27/2018. Tomorrow is 3/28/2018.'
      >>> # Find all occurrences of a date
      >>> import re
      >>> re.findall(r'\d+/\d+/\d+', text)
      ['3/27/2018', '3/28/2018']
      >>> # Replace all occurrences of a date with replacement text
      >>> re.sub(r'(\d+)/(\d+)/(\d+)', r'\3-\1-\2', text)
      'Today is 2018-3-27. Tomorrow is 2018-3-28.'
      >>>
      

      有關(guān) re 模塊的更多信息,請(qǐng)查看官方文檔:https://docs.python.org/library/re.html

      說(shuō)明

      當(dāng)你開(kāi)始嘗試使用解釋器時(shí),你總是希望了解更多有關(guān)不同對(duì)象所支持的操作。例如,如何找出哪些操作是對(duì)字符串是有效的?

      根據(jù)你的 Python 環(huán)境,你可能可以通過(guò) tab 鍵補(bǔ)全來(lái)查看可用方法的列表。例如,嘗試輸入下面的代碼:

      >>> s = 'hello world'
      >>> s.<tab key>
      >>>
      

      如果單擊 tab 鍵沒(méi)有任何作用,你可以使用 Python 的內(nèi)建函數(shù) dir()。示例:

      >>> s = 'hello'
      >>> dir(s)
      ['__add__', '__class__', '__contains__', ..., 'find', 'format',
      'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace',
      'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition',
      'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit',
      'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase',
      'title', 'translate', 'upper', 'zfill']
      >>>
      

      dir() 函數(shù)生成一個(gè)在 (.) 后出現(xiàn)的所有操作的列表。

      使用 help() 函數(shù)可以獲取有關(guān)特定操作的更多信息。

      >>> help(s.upper)
      Help on built-in function upper:
      
      upper(...)
          S.upper() -> string
      
          Return a copy of the string S converted to uppercase.
      >>>
      

      目錄 | 上一節(jié) (1.3 數(shù)字) | 下一節(jié) (1.5 列表)

      注:完整翻譯見(jiàn) https://github.com/codists/practical-python-zh

      posted @ 2021-02-16 18:40  codists  閱讀(352)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 国产福利在线观看免费第一福利| 老司机精品影院一区二区三区| 精品无码三级在线观看视频| 中文字幕久久熟女蜜桃| 国产一区二区三区禁18| 久久久久亚洲AV色欲av| 久久综合久中文字幕青草| 另类 专区 欧美 制服| 99精品偷自拍| 日本亚洲欧洲免费无线码| 任你躁国产自任一区二区三区| 国产三级精品三级色噜噜| 中文字幕日韩精品亚洲一区| 女性高爱潮视频| 亚洲一区二区三区av无码| 亚洲色最新高清AV网站| 精品激情视频一区二区三区| 欧美成人午夜在线观看视频| 无码精品人妻一区二区三区中 | 国产偷自视频区视频| 亚洲精品一区二区三区蜜| 国产大学生粉嫩无套流白浆| 72种姿势欧美久久久久大黄蕉| 亚洲熟妇中文字幕五十路| 国产精品99久久免费| 久久精品午夜视频| 亚洲成人av在线高清| 97久久久精品综合88久久| 亚洲中文字幕无码一区日日添 | 中文字幕日韩精品亚洲一区| 亚洲中文字幕国产精品| 日韩一区二区三区一级片| 国产高清精品在线91| 精品在免费线中文字幕久久| 国产熟女一区二区三区四区| 国产高清在线精品一区APP| 国产乱码精品一区二区三区中文| 国产成人无码aa精品一区| 亚洲 成人 无码 在线观看| 国内精品自线在拍| 国产精品免费中文字幕|