python中的编码转换

本文详细介绍了Python中十六进制与中文的转换,包括字符串和bytes类型的处理。同时,阐述了URL的编码与解码,包括编码文字、字典,以及指定不编码的字符。此外,还讲解了URL的解析和查询参数提取,以及Unicode与中文的转换方法。
摘要由CSDN通过智能技术生成

一、十六进制与中文

概念

\x开头的编码是十六进制字符,\x后面跟的字符即为十六进制的字符串。

十六进制转中文

1、要转换的类似\xe8\xa7\xa3,且为字符串
info = '\\xe8\\xa7\\xa3\\xe6\\x9e\\x84\\xe6\\x89\\xb9\\xe8\\xaf\\x84\\xe6\\x8e\\xa2\\xe7\\xa7\\x98'#字符串类型
out = bytes(info,'utf-8').decode('unicode_escape').encode('latin1').decode()
print(out)

输出:

解构批评探秘
2、要转换的类似\xe8\xa7\xa3,且为字符串

方法一:

info = '\xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\x96\xe7\x95\x8c'#字符串类型
info = info.encode('unicode_escape').decode('utf-8')
out = bytes(info,'utf-8').decode('unicode_escape').encode('latin1').decode()
print(out)

输出:

你好世界

方法二:

from urllib import parse
info = '\xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\x96\xe7\x95\x8c'
info = info.encode('unicode_escape').decode('utf-8').replace('\\x', '%')
out = parse.unquote(info)
print(out)

输出:

你好世界

3、为bytes类型

info = b'\xE6\x88\x91\xE6\x98\xAF\xE8\xAF\xB7\xE6\xB1\x82'
info = info.decode('utf-8')
print(info)

输出:

我是请求

二、URL的编码与解码

url编码

1、编码文字
from urllib import parse

print(parse.quote("你好"))  # 以utf-8编码模式进行url编码
print(parse.quote("你好", encoding='gbk'))  # 以gbk编码模式进行url编码

输出:

%E4%BD%A0%E5%A5%BD
%C4%E3%BA%C3
2、编码字典
from urllib import parse

args = {
    'wd': '你好',
    'ie': '哈哈'
}

url = "http://www.baidu.com/s?{}".format(parse.urlencode(args))  # 以utf-8编码模式进行url编码
url2 = "http://www.baidu.com/s?{}".format(parse.urlencode(args, encoding='gbk'))  # 以gbk编码模式进行url编码
print(url)
print(url2)

输出:

http://www.baidu.com/s?wd=%E4%BD%A0%E5%A5%BD&ie=%E5%93%88%E5%93%88
http://www.baidu.com/s?wd=%C4%E3%BA%C3&ie=%B9%FE%B9%FE
3、规定某些字符不进行编码

规定;/?:@&=+$,不进行编码

from urllib.parse import quote
url = "https://www.baidu.com/s?wd=code123中国"
gbk_url = quote(url, safe=";/?:@&=+$,", encoding="gbk")
utf_url = quote(url, safe=";/?:@&=+$,", encoding="utf-8")
print("gbk_url: %s" % gbk_url)
print("utf_url: %s" % utf_url)

规定对于可显示的ascii字符,不做编码

from urllib.parse import quote
import string
url = 'http://www.hello.world/你好世界'
url_encode = quote(url, safe=string.printable)
print(url_encode)

url解码

1、解码字符串
from urllib import parse
print(parse.unquote("http://www.baidu.com/s?wd=%E4%BD%A0%E5%A5%BD&ie=%E5%93%88%E5%93%88"))
print(parse.unquote("http://www.baidu.com/s?wd=%C4%E3%BA%C3&ie=%B9%FE%B9%FE",encoding='gbk'))

输出:

http://www.baidu.com/s?wd=你好&ie=哈哈
http://www.baidu.com/s?wd=你好&ie=哈哈
2、解码字典
from urllib import parse

params = {
    'name': '张三',
    'age': 18,
    'greet': 'hello'
}
qs = parse.urlencode(params)
print(qs)
result = parse.parse_qs(qs)
print(result)

输出:

name=%E5%BC%A0%E4%B8%89&age=18&greet=hello
{'name': ['张三'], 'age': ['18'], 'greet': ['hello']}

url解析

from urllib import parse

url = 'http://www.baidu.com/s?wd=python&username=abc#1'
result = parse.urlparse(url)

print('scheme:', result.scheme)
print('netloc:', result.netloc)
print('path:', result.path)
print('params:', result.params)
print('query:', result.query)
print('fragment:', result.fragment)

输出:

scheme: http
netloc: www.baidu.com
path: /s
params: 
query: wd=python&username=abc
fragment: 1

url提取查询参数

方法一:

from urllib import parse

url = 'http://www.baidu.com/s?wd=python&username=abc#1'


def get_query(url):
    result = parse.urlparse(url)
    querys = parse.parse_qs(result.query)
    querys = {k: v[0] for k, v in querys.items()}
    return querys


print(get_query(url))

输出:

{'wd': 'python', 'username': 'abc'}

方法二:使用模块furl
安装

pip install furl

使用

from furl import furl

f = furl("http://www.baidu.com/s?wd=python&username=abc#over")
print(f.path)
print(f.scheme)
print(f.fragment)
print(f.args['wd'])
print(f.args['username'])

输出:

/s
http
over
python
abc

unicode与中文

unicode转中文:类型1

s = '\\u9500\\u552e'
print(json.loads(f'"{s}"'))
print(s.encode('utf-8').decode("unicode_escape"))

输出:

销售
销售

unicode转中文:类型2

i = '\u751F\u5316\u5371\u673A'
print(str(i))

输出:

生化危机
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Python的Unicode编码可以通过使用encode()和decode()方法进行转换文。例如,将Unicode编码转换文字符串可以使用decode()方法,如下所示: ``` unicode_str = u'\u4e2d\u6587' chinese_str = unicode_str.decode('unicode_escape') print(chinese_str) ``` 输出结果为:文 同样地,将文字符串转换为Unicode编码可以使用encode()方法,如下所示: ``` chinese_str = '文' unicode_str = chinese_str.encode('unicode_escape') print(unicode_str) ``` 输出结果为:\u4e2d\u6587 ### 回答2: 在Python,Unicode编码文字符之间的转换是一件很常见的事情。Unicode编码是一种字符集,它包含了世界上所有的字符,而文字符则是其的一部分。如果我们需要在Python使用文字符,就需要将它们从Unicode编码转换文字符,或者将文字符转换成Unicode编码。以下是几种常用的方法: 1.字符串.decode()方法 在Python,我们可以使用decode()方法将Unicode编码转换文字符。这个方法可以作用在字符串上,它会返回一个新的字符串,其包含了Unicode编码所表示的文字符。 例: ```python s = '\u4f60\u597d\uff0c\u4e16\u754c\uff01' print(s) # 输出:'\u4f60\u597d\uff0c\u4e16\u754c\uff01' print(s.decode('unicode-escape')) #输出:'你好,世界!' ``` 在这个例子,我们定义了一个字符串对象s,它包含了四个Unicode编码。然后,我们使用decode()方法将它转换成了文字符,并将转换后的字符串输出。 2.字符串.encode()方法 我们也可以使用字符串的encode()方法将文字符转换成Unicode编码。这个方法可以作用在字符串上,它会返回一个新的字符串,其包含了文字符所对应的Unicode编码。 例: ```python s = '你好,世界!' print(s) # 输出:'你好,世界!' print(s.encode('unicode-escape')) # 输出:b'\\u4f60\\u597d\\uff0c\\u4e16\\u754c\\uff01' print(s.encode('utf-8')) # 输出:b'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8c\xe4\xb8\x96\xe7\x95\x8c\xef\xbc\x81' ``` 在这个例子,我们定义了一个字符串对象s,它包含了三个文字符。然后,我们使用encode()方法将它们转换成Unicode编码,并将转换后的字符串输出。 3.使用Python内置函数chr()和ord() 除了字符串的方法之外,Python还有两个常用的内置函数chr()和ord()可以实现Unicode编码文字符之间的转换。chr()函数接受一个整数参数,返回对应的Unicode字符,而ord()函数接受一个字符参数,返回它的Unicode编码。 例: ```python print(chr(25105)) # 输出:'你' print(ord('你')) # 输出:25105 ``` 在这个例子,我们使用chr()函数将Unicode编码25105转换成了文字符'你',使用ord()函数将文字符'你'转换成了Unicode编码25105。 总之,在Python,我们可以使用字符串的decode()和encode()方法,或者内置函数chr()和ord()来实现Unicode编码文字符之间的转换。这些方法和函数都非常简单明了,千万别被编码所困扰! ### 回答3: Python是一种功能强大的编程语言,支持各种编码方式,包括unicode编码。unicode编码是一种通用的字符编码,可以支持包括文在内的所有语言的字符。它是计算机存储和处理字符的标准方式。 在Python,处理文字符需要先转换为unicode编码,然后再进行操作。有时候需要将unicode编码转换文字符,在Python可以使用encode()和decode()方法来完成。 当一个文字符串需要转换为unicode编码时,可以使用Python内置的unicode函数进行转换。例如,以下代码将一个文字符串转换为unicode编码: chinese_str = "你好,世界" unicode_str = unicode(chinese_str, "utf-8") 其,chinese_str为文字符串,"utf-8"为编码方式。通过unicode()函数将文字符串转换为unicode编码后,可以进行一系列操作,例如打印、传输等等。 当需要将unicode编码转换文字符时,需要使用encode()方法。例如,以下代码将一个unicode编码转换文字符: unicode_str = u'\u4f60\u597d\uff0c\u4e16\u754c' chinese_str = unicode_str.encode('utf-8') 其,unicode_str为unicode编码字符串,使用.encode()方法将其转换文字符,编码方式为"utf-8",最终得到chinese_str为文字符串。 需要注意的是,在Python 3.x版本,unicode函数被移除,字符串默认采用unicode编码方式,因此在进行字符编码转换时需要进行一些调整。 总之,Python支持unicode编码方式,可以方便地进行文字符转换。通过unicode()函数和encode()方法可以实现unicode编码文字符的转换,通过decode()方法可以实现文字符到unicode编码转换Python的Unicode编码转换操作非常简单,如果你需要在项目处理文字符,Python是一个非常不错的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞得更高肥尾沙鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值