国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PyTips 0x07 - Python 字符串

go4it / 775人閱讀

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

項目地址: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 界的"錕斤拷"!

今天和接下來幾期的內容將主要關注 Python 中的字符串(str)、字節(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 暫時可以看作一張非常大的地圖,這張地圖里面記錄了世界上所有的符號,而碼位則是每個符號所對應的坐標(具體內容將在后面的幾期介紹)。

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) # 限定切分次數
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 中詳細介紹。

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

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/37807.html

相關文章

  • PyTips 0x08 - Python 字節與字節數組

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

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

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

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

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

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

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

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

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

    jaysun 評論0 收藏0

發表評論

0條評論

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