本文目录一览:
- 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]表示除小写字母外的任意一个字符