本文目錄一覽:
- 1、Python的中文字符串遍歷問題
- 2、Python判斷字符串中是否有中文字符
- 3、python中文字符串怎麼定位啊,比如‘我愛中國’,,那麼如果‘我愛中國’[2:3]不是“中國”兩個字啊
- 4、python 中文字符串怎麼使用count
- 5、用Python從鍵盤輸入一個有中文和英文的字符串,編程分別輸出中文和英文,並統?
- 6、Python 3.5 如何對中文字符串進行處理
Python的中文字符串遍歷問題
首先一個,你這個’a’是什麼編碼?可能不是你所想的gbk
a=’測試’
a
這樣試試看,如果出來是6個字(word),說明是utf-8,如果是4個字,說明是gbk。
另外,不管是utf-8還是gbk,都不能這樣遍歷,因為這裡它會
一個字
一個字拿出來。
虛擬機
把a當成一個
長度
為len(a)的
字符串
了。
接下來是遍歷問題。
linux的shell大都默認是utf-8,所以一個
中文
字符是
三個字
,所以要三個三個地讀,你可以試下:
a[:3]
出來就是個測字
windows的command的默認是cp936,也就是gbk,一個中文字符是
兩個字
,所以兩個字兩個字地讀。
還有另一種遍歷的方法,把字符串轉換成unicode,這樣中文
英文
都是一個字,就可以用你的for
i
in
a的方法遍歷了。這個的好處是中文英文字符都是一個字,而utf-8和gbk里,
英文字母
只佔一個字。
Python判斷字符串中是否有中文字符
首先,在Python中字符串的表示是 用unicode編碼。所以在做編碼轉換時,通常要以unicode作為中間編碼。
decode的作用是將其他編碼的字符串轉換成unicode編碼,比如 a.decode(‘utf-8’),表示將utf-8編碼的字符串轉換成unicode編碼
encode的作用是將unicode編碼的字符串轉換成其他編碼格式的字符串,比如b.encode(‘utf-8’),表示將unicode編碼格式轉換成utf-8編碼格式的字符串
判斷一個字符串中是否含有中文字符:
好了,有了以上知識,就可以很容易的解決這個問題了。這是代碼
1 #-*- coding:utf-8 -*-
2
3 import sys
4 reload(sys)
5 sys.setdefaultencoding(‘utf8’)
6
7 def check_contain_chinese(check_str):
8 for ch in check_str.decode(‘utf-8’):
9 if u’\u4e00′ = ch = u’\u9fff’:
10 return True
11 return False
12
13 if __name__ == “__main__”:
14 print check_contain_chinese(‘中國’)
15 print check_contain_chinese(‘xxx’)
16 print check_contain_chinese(‘xx中國’)
17
18 結果:
19 True
20 False
21 True
python中文字符串怎麼定位啊,比如‘我愛中國’,,那麼如果‘我愛中國’[2:3]不是“中國”兩個字啊
中文字符在不同編碼規則里所佔用的長度是不同的,這個你可以去查詢相應的編碼規則,具體到python中,可以從以下的小例子中看出:
也就是說如果你使用的unicode編碼在python中的長度為1,gbk編碼在python中的長度為2。對於utf-8編碼來書,字符長度是可變的(這個可以從上圖的str4和str5看出),不同的字符所佔用的字節數是不同的,例如數字和字母佔用1個字節,漢字、日文、韓文等佔用2個字節或以上,長度不定。
所以還需要具體情況具體分析,
具體到你的問題,根據python的切片規則,[2:3]僅僅取了第三個個字節,並不包括第三個,想要取兩個的話可以用[2:4]。想要解決你的問題按照不同的編碼對應即可
python 中文字符串怎麼使用count
與英文沒區別啊(要注意你用的字符集)
#
-*-
coding:
utf-8
-*-
s=”Python
count()
方法用於統計字符串里某個字符出現的次數。可選參數為在字符串搜索的開始與結束位置”
(
s.count(“字”))
結果為
3
用Python從鍵盤輸入一個有中文和英文的字符串,編程分別輸出中文和英文,並統?
from string import ascii_letters
x=input(“輸入字符串:”)
hz=[]
zm=[]
for xx in x:
if xx in ([chr(j) for j in range(19968,40867)]):
hz.append(xx)
print(f”漢字:{xx}”)
elif xx in ascii_letters:
zm.append(xx)
print(f”字母:{xx}”)
print([hz,zm])
Python 3.5 如何對中文字符串進行處理
在Python的string前面加上‘r’, 是為了告訴編譯器這個string是個raw string,不要轉意backslash ‘\’ 。 例如,\n 在raw string中,是兩個字符,\和n, 而不會轉意為換行符。由於正則表達式和 \ 會有衝突,因此,當一個字符串使用了正則表達式後,最好在前面加上’r’。
在[]中
-長用來指定一個字符集,在這個字符集中的一個可以拿來匹配:[abc] [a-z]
-元字符在在字符集中不起作用
-在[]內用^表示補集,用來匹配不在區間範圍內的字符
s=r’aba’ 匹配abc
s=r’t[io]p’ 匹配tip或者top
s=r’t[a-z0-9A-Z]’匹配t+0-9或者a-z或者A-Z
[abc]表示“a”或“b”或“c”
[0-9]表示0~9中任意一個數字,等價於[0123456789]
[\u4e00-\u9fa5]表示任意一個漢字
[^a1]表示除“a”、“1”、“”外的其它任意一個字符
[^a-z]表示除小寫字母外的任意一個字符
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/194605.html