本文目录一览:
- Python的中文字符串遍历问题
- Python判断字符串中是否有中文字符
- python中文字符串怎么定位啊,比如‘我爱中国’,,那么如果‘我爱中国’[2:3]不是“中国”两个字啊
- python 中文字符串怎么使用count
- 用Python从键盘输入一个有中文和英文的字符串,编程分别输出中文和英文,并统?
- [Python 3.5 如何对中文字符串进行处理](#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编码格式的字符串。
判断一个字符串中是否含有中文字符:
有了以上知识,就可以很容易的解决这个问题了。这是代码:
# -*- coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf8')
def check_contain_chinese(check_str):
for ch in check_str.decode('utf-8'):
if u'\u4e00' <= ch <= u'\u9fff':
return True
return False
if __name__ == "__main__":
print check_contain_chinese('中国')
print check_contain_chinese('xxx')
print check_contain_chinese('xx中国')
结果:
True
False
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() 方法用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置"
print(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]
表示除小写字母外的任意一个字符