成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PyTips 0x07 - Python 字符串

go4it / 774人閱讀

摘要:項目地址所有用過的人應該都看過下面兩行錯誤信息這就是界的錕斤拷今天和接下來幾期的內(nèi)容將主要關注中的字符串字節(jié)及兩者之間的相互轉換。

項目地址:https://git.io/pytips

所有用過 Python (2&3)的人應該都看過下面兩行錯誤信息:

UnicodeEncodeError: "ascii" codec can"t encode characters in position 0-1: ordinal not in range(128)

UnicodeDecodeError: "utf-8" codec can"t decode bytes in position 0-1: invalid continuation byte

這就是 Python 界的"錕斤拷"!

今天和接下來幾期的內(nèi)容將主要關注 Python 中的字符串(str)、字節(jié)(bytes)及兩者之間的相互轉換(encode/decode)。也許不能讓你突然間解決所有亂碼問題,但希望可以幫助你迅速找到問題所在。

定義

Python 中對字符串的定義如下:

Textual data in Python is handled with str objects, or strings. Strings are immutable sequences of Unicode code points.

Python 3.5 中字符串是由一系列 Unicode 碼位(code point)所組成的不可變序列

("S" "T" "R" "I" "N" "G")
"STRING"

不可變是指無法對字符串本身進行更改操作:

s = "Hello"
print(s[3])
s[3] = "o"
l
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

 in ()
      1 s = "Hello"
      2 print(s[3])
----> 3 s[3] = "o"


TypeError: "str" object does not support item assignment

序列(sequence)則是指字符串繼承序列類型(list/tuple/range)的通用操作:

[i.upper() for i in "hello"]
["H", "E", "L", "L", "O"]

至于 Unicode 暫時可以看作一張非常大的地圖,這張地圖里面記錄了世界上所有的符號,而碼位則是每個符號所對應的坐標(具體內(nèi)容將在后面的幾期介紹)。

s = "雨"
print(s)
print(len(s))
print(s.encode())
雨
1
b"xe9x9bxa8"
常用操作

len:字符串長度;

split & join

find & index

strip

upper & lower & swapcase & title & capitalize

endswith & startswith & is*

zfill

# split & join
s = "Hello world!"
print(",".join(s.split())) # 常用的切分 & 重組操作

"https://github.com/rainyear/pytips".split("/", 2) # 限定切分次數(shù)
Hello,world!
["https:", "", "github.com/rainyear/pytips"]
s = "coffee"
print(s.find("f"))    # 從左至右搜索,返回第一個下標
print(s.rfind("f"))   # 從右至左搜索,返回第一個下表

print(s.find("a"))    # 若不存在則返回 -1
print(s.index("a"))   # 若不存在則拋出 ValueError,其余與 find 相同
2
3
-1
---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

 in ()
      4 
      5 print(s.find("a"))    # 若不存在則返回 -1
----> 6 print(s.index("a"))   # 若不存在則拋出 ValueError,其余與 find 相同


ValueError: substring not found
print(" hello world    ".strip())
print("helloworld".strip("heo"))
print("["+"          i         ".lstrip() +"]")
print("["+"          i         ".rstrip() +"]")
hello world
lloworld
[i         ]
[          i]
print("{}
{}
{}
{}
{}".format(
    "hello, WORLD".upper(),
    "hello, WORLD".lower(),
    "hello, WORLD".swapcase(),
    "hello, WORLD".capitalize(),
    "hello, WORLD".title()))
HELLO, WORLD
hello, world
HELLO, world
Hello, world
Hello, World
print("""
{}|{}
{}|{}
{}|{}
{}|{}
{}|{}
{}|{}
""".format(
    "Python".startswith("P"),"Python".startswith("y"),
    "Python".endswith("n"),"Python".endswith("o"),
    "i23o6".isalnum(),"1 2 3 0 6".isalnum(),
    "isalpha".isalpha(),"isa1pha".isalpha(),
    "python".islower(),"Python".islower(),
    "PYTHON".isupper(),"Python".isupper(),
))
True|False
True|False
True|False
True|False
True|False
True|False

"101".zfill(8)
"00000101"

format / encode

格式化輸出 format 是非常有用的工具,將會多帶帶進行介紹;encode 會在 bytes-decode-Unicode-encode-bytes 中詳細介紹。

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/37807.html

相關文章

  • PyTips 0x08 - Python 字節(jié)與字節(jié)數(shù)組

    摘要:回到對字節(jié)和字節(jié)數(shù)組的定義為了用計算機可以理解的數(shù)字描述人類使用的字符,我們需要一張數(shù)字與字符對應的表。由于和字符串一樣是序列類型,字節(jié)和字節(jié)數(shù)組可用的方法也類似,這里就不一一列舉了。 項目地址:https://git.io/pytips 0x07 中介紹了 Python 中的字符串類型,字符串類型是對人類友好的符號,但計算機只認識一種符號,那就是二進制(binary)數(shù),或者說是數(shù)字...

    Leo_chen 評論0 收藏0
  • PyTips 0x09 - Python 中 Unicode 的正確用法

    摘要:只包含了個基本拉丁字母阿拉伯數(shù)目字和英式標點符號一共個字符,因此只需要不占滿一個字節(jié)就可以存儲,而則涵蓋的數(shù)據(jù)除了視覺上的字形編碼方法標準的字符編碼外,還包含了字符特性,如大小寫字母,共可包含個字符,而到現(xiàn)在只填充了其中的個位置。 項目地址:https://git.io/pytips 0x07 和 0x08 分別介紹了 Python 中的字符串類型(str)和字節(jié)類型(byte),以及...

    shenhualong 評論0 收藏0
  • PyTips 0x0a - Python 符串的格式化

    摘要:項目地址相信很多人在格式化字符串的時候都用的語法,提出一種更先進的格式化方法并成為的標準用來替換舊的格式化語法,從開始已經(jīng)實現(xiàn)了這一方法其它解釋器未考證。 項目地址:https://git.io/pytips 相信很多人在格式化字符串的時候都用%s % v的語法,PEP 3101 提出一種更先進的格式化方法 str.format() 并成為 Python 3 的標準用來替換舊的 %s ...

    luqiuwen 評論0 收藏0
  • PyTips 0x01 - 迭代器與生成器

    摘要:項目地址迭代器與生成器迭代器與生成器是中比較常用又很容易混淆的兩個概念,今天就把它們梳理一遍,并舉一些常用的例子。生成器前面說到創(chuàng)建迭代器有種方法,其中第三種就是生成器。 項目地址:https://git.io/pytips 迭代器與生成器 迭代器(iterator)與生成器(generator)是 Python 中比較常用又很容易混淆的兩個概念,今天就把它們梳理一遍,并舉一些常用的例...

    chemzqm 評論0 收藏0
  • PyTips 0x0b - Python 無處不在的else

    摘要:可以通過一個簡單的例子來展示當然,也可以用狀態(tài)變量的做法來替代總結有人覺得的這些用法違反直覺或者是而非,不值得提倡。 項目地址:https://git.io/pytips 我們都知道 Python 中 else 的基本用法是在條件控制語句中的 if...elif...else...,但是 else 還有兩個其它的用途,一是用于循環(huán)的結尾,另一個是用在錯誤處理的 try 中。這原本是 P...

    jaysun 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<