当前位置:首页 » 编程语言 » python转换中文

python转换中文

发布时间: 2023-04-18 00:09:00

1. python 编码转换与中文处理

python 中的 unicode 是让人很困惑、比较难以理解的问题. 这篇文章 写的比较好, utf-8是 unicode的一种实现方式,unicode、gbk、gb2312是编码字符集.

Python 默认脚本文件都是 ANSCII 编码的,当文件 中有非 ANSCII 编码范围内的字符的时候就要使用" 编码指示 "来修正一个 mole 的定义中,如果.py文件中包含中文字符(严格的说是含有非anscii字符),则需要在第一行或第二行指定编码声明: # -*- coding=utf-8 -*- 或者 #coding=utf-8
其他的编码如:gbk、gb2312也可以;否则会出现:

先说一下python中的字符串类型,在python中有两种字符串类型,分别是 str 和 unicode ,他们都是basestring的派生类;

在str的文档中有这样的一句话:

也就是说在读取一个文件的内容,或者从网络上读取到内容时,保持的对象为str类型;如果想把一个str转换成特定编码类型,需要把str转为Unicode,然后从unicode转为特定的编码类型如:utf-8、gb2312等。

unicode 转为 gb2312,utf-8等,使用 encode(encoding)

utf-8,GBK转换为 unicode 使用 unicode(s,encoding) 或者 s.decode(encoding)

普通的 str 转为 unicode,

如果直接执行s.encode('gb2312')会发生什么?

这里会发生一个异常:Python 会自动的先将 s 解码为 unicode ,然后再编码成 gb2312。因为解码是python自动进行的,我们没有指明解码方式,python 就会使用 sys.defaultencoding 指明的方式来解码。很多情况下 sys.defaultencoding 是 ANSCII,如果 s 不是这个类型就会出错。
拿上面的情况来说,我的 sys.defaultencoding 是 anscii,而 s 的编码方式和文件的编码方式一致,是 utf8 的,所以出错了:

对于这种情况,我们有两种方法来改正错误:

s = '中文'
s.decode('utf-8').encode('gb2312') ```

import sys
reload(sys) # Python2.5 初始化后会删除 sys.setdefaultencoding 这个方法,我们需要重新载入
sys.setdefaultencoding('utf-8')
str = '中文'
str.encode('gb2312')

print open("Test.txt").read()

import codecs
print open("Test.txt").read().decode("utf-8")

Traceback (most recent call last):
File "ChineseTest.py", line 3, in <mole>
print open("Test.txt").read().decode("utf-8")
UnicodeEncodeError: 'gbk' codec can't encode character u'ufeff' in position 0: illegal multibyte sequence

import codecs
data = open("Test.txt").read()
if data[:3] == codecs.BOM_UTF8:
data = data[3:]
print data.decode("utf-8")

s = "中文"
print unicode(s, "utf-8")

Traceback (most recent call last):
File "ChineseTest.py", line 3, in <mole>
s = unicode(s, "utf-8")
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-1: invalid data

s = "中文"
print unicode(s, "gbk")

s = "中文"
print unicode(s, "cp936")

2. python中,把‘&#’ ‘&#x开头的字符串转换成中文

(一)

爬虫时经常遇到'/u'开头的unicode编码的字符串,这时通过decode()来解决.

但偶尔也会遇到以‘&#’ 或者‘&#x’开头的字符串, 这是HTML、XML 等 SGML 类语言的转义序列(escape sequence)。它们不是“编码”。

如果以‘&#‘ 开头,后接十进制数字蠢逗,

如果以‘&#x’开头,后接十六进制数字。

在python中的解决方法带哪卖是:

importhtml

a ='外观'

print(html.unescape(a))

# 输出:外观

希缓迅望对你有用

(二)

Python中escape和unescape

Python处理HTML转义字符

在抓网页数据经常遇到例如>或者 这种HTML转义符,抓到字符串里很是烦人。

比方说一个从网页中抓到的字符串

p ='<abc>'

用Python可以这样处理:

import html

p ='<abc>'txt= html.unescape(p)print(txt)

#这样就得到了txt= ''

如果还想转回去,可以这样:

import cgi

q = cgi.escape(html)print(q)

       #这样又回到了 html = '<abc>'

3. python中将阿拉伯数字转换为中文

第一种方案:
def num_to_char(num):
"""数字转中文"""
num=str(num)
new_str=""
num_dict={"0":u"零","1":u"一","2":u"二","3":u"三","4":u"四","5":u"五","6":u"六","7":u"七","8":u"八","9":u"九"}
listnum=list(num)
# print(listnum)
shu=[]
for i in listnum:
# print(num_dict[i])
shu.append(num_dict[i])
new_str="".join(shu)
# print(new_str)
return new_str

第二种方案
_MAPPING = (u'零', u'一', u'二', u'三', u'四', u'五', u'六', u'七', u'八', u'九', u'十', u'十一', u'十二', u'十三', u'十四', u'十五', u'十六', u'十七',u'十八', u'十九')
_P0 = (u'', u'十', u'百', u'千',)
_S4 = 10 ** 4
def _to_chinese4(num):
assert (0 <= num and num < _S4)
if num < 20:
return _MAPPING[num]
else:
lst = []
while num >= 10:
lst.append(num % 10)
num = num / 10
lst.append(num)
c = len(lst) # 位数
result = u''

for idx, val in enumerate(lst):
val = int(val)
if val != 0:
result += _P0[idx] + _MAPPING[val]
if idx < c - 1 and lst[idx + 1] == 0:
result += u'零'
return result[::-1]

4. python界面怎么调成中文版

python设置中文界面的方法:

找到windows10中文字体所在文件夹

C:/Windows/Fonts/

在代码前面加上:

import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['simhei'] # 添加中文字体为黑体 plt.rcParams['axes.unicode_minus'] =False ... #ax[0, 0].set_ylabel(u"哈哈") #

注意前面加上'u'. #ax[2, 0].set_ylabel(u"嘿嘿") ... #或 import matplotlib.pyplot as plt from matplotlib import font_manager my_font =

font_manager.FontProperties(fname="C:/Windows/Fonts/simsun.ttf") # 添加中文字体为黑体 ... ax[0, 0].set_ylabel(u"哈哈", fontproperties=my_font) ax[2, 0].set_ylabel(u"嘿嘿", fontproperties=my_font)

发展历程

自从20世纪90年代初Python语言诞生至今,它已被逐渐广泛应用于系统管理任务的处理和Web编程

1995 年,Guido van Rossum 在弗吉尼亚州的国家创新研究公司(CNRI)继续他在 Python 上的工作,并在那里发布了该软件的多个版本。

2000 年五月,Guido van Rossum和 Python 核心开发团队转到 BeOpen.com 并组建了 BeOpen PythonLabs 团队。 同年十月,BeOpen PythonLabs 团队转到 Digital Creations (现为 Zope Corporation)。

2001 年,Python 软件基金会 (PSF) 成立,这是一个专为拥有 Python 相关知识产权而创建的非营利组织。 Zope Corporation 现在是 PSF 的赞助成员。

5. python3.11如何将帮助文件调为中文

python变成中文版的实现方法如下:
首先下载pycharm汉化包;
然后将“resources_en.jar”文件更名为“resources_cn.jar”;
最后将“resources_cn.jar”文件复制回lib文件夹内即可。
PS:建议不要使用汉化版,会导致一些小问题,例如设置界面显示不完整等。

6. python中怎样将unicode转换成原来的中文

python默认就是unicode存储。如果是从文件读取的,在open的参数中指定encoding关键字参数就行。如下:

#coding=utf-8/importjson /defLoadQuestion(): /f=open("test.json",'r') qas=json.load(f) question=qas['documents'] /returnquestion/t=LoadQuestion() /printstr(t).decode("unicode-escape")

拓展资料:

通常python2时所有IO读写都是byte方式。也就是编码后的。java也是这样子。只有python3还有某些特定的模块才会自动将byte重新转换成unicode

在python2里的确可以使用s.decode('gbk','ignore')之类的变成unicode。不过在python3里应该是这样子, s.encode('gbk','ignore')这样就变成了byte

如果你喜欢 utf-8,可以s.encode(‘utf-8','ignore')和s.decode(‘utf-8','ignore')

7. python 如何将乱码转成汉字

1、python2与python3稍微有点区别
2、python2中默认的字符编码格式都是unicode,在字符串前加'u',表示unicode 编码
3、将unicode转换成中文,只需要用deconde解码就可以了
>>> u='欢迎'>>> e=u.encode()>>> eb'\xe6\xac\xa2\xe8\xbf\x8e'>>> e.decode()#python3中默认就是utf-8编码'欢迎'>>> e.decode('gbk')#如果解码为gbk就是乱码'娆四繋'

python2编码环境比较复杂,在这里不做详细说明

8. python idle怎么调成中文版

1、首先点击电脑上的开始菜单,在开始菜单中安装的python目录下点击‘IDLE(Python 3.6 64-bit),进入IDLE。

9. python 字符串格式的unicode编码转中文

 python对于Unicode编码可以使用decode进行转换成中文:

>>> str = b'\xe8\xb4\xb9\xe8\x84\x91\xe5\xad\x90'

>>> str.decode('utf-8')

'费脑子'

如果是字符串类型的Unicode编码没办法直接用decode进行转换:

>>> str ="\\xe8\\xb4\\xb9\\xe8\\x84\\x91\\xe5\\xad\\x90"

>>> str.decode('utf-8')

Traceback (most recent call last):

  File "<stdin>", line 1, in <mole>

AttributeError: 'str' object has no attribute 'decode'

处理方式:

>>> str = eval("b" + "\"" + str + "\"")

>>> str.decode('utf-8')

'费脑子'

10. 用python实现将一列中所有的ID根据码表转换成中文

python默认晌绝就是unicode存储。如果是从文件读取的,在open的参数中指定encoding关键字参数就行。如下:

#coding=utf-8/importjson /defLoadQuestion(): /f=搜袜open("test.json",'世谨激r') qas=json.load(f) question=qas['documents'] /returnquestion/t=LoadQuestion() /printstr(t).decode("unicode-escape")

热点内容
华为ftp在哪 发布:2024-11-01 22:36:33 浏览:288
java数组包含字符串 发布:2024-11-01 22:31:15 浏览:791
服务器和家用电脑质量 发布:2024-11-01 22:28:29 浏览:488
sqlserver默认实例 发布:2024-11-01 22:23:42 浏览:959
sort排序java 发布:2024-11-01 22:23:26 浏览:47
解压后的apk无法安装 发布:2024-11-01 22:22:10 浏览:666
公司的pop服务器地址 发布:2024-11-01 22:22:07 浏览:119
朵唯m30手机配置是真的吗如何 发布:2024-11-01 22:16:56 浏览:681
梦幻西游怎么清理缓存 发布:2024-11-01 22:15:52 浏览:345
如何配置fcm 发布:2024-11-01 22:08:15 浏览:854