IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> AttributeError: ‘str‘ object has no attribute ‘decode‘ -> 正文阅读

[Python知识库]AttributeError: ‘str‘ object has no attribute ‘decode‘

1.问题

Traceback (most recent call last):
File “/Users/xtransfer/Mike/01_workspace/01_python_workspace/01_prod_branch_workspace/atta-ai/cv/src/process/edm_mail_content_audit_demo3.py”, line 754, in
print(‘是否是中文:’, ‘债’.decode(‘utf-8’) >= u’/u4e00’ and ‘债’.decode(‘utf-8’) <= u’/u9fa5’)
AttributeError: ‘str’ object has no attribute ‘decode’
AttributeError: ‘str‘ object has no attribute ‘decode‘解决方法
https://blog.csdn.net/qq_43192819/article/details/108981008

2.原因

  • 1.python2和python3在字符串编码上的区别;
  • 2.Python 3.4: str : AttributeError: ‘str’ object has no attribute 'decode

针对解决方案

  • 1.原因一的解决方法:
    print (‘张俊’.encode(‘utf-8’). decode(‘utf-8’) ) #必须将字节字符串解码后才能打印出来
    参考链接:https://www.cnblogs.com/geekard/archive/2012/10/04/python-string-endec.html

  • 2.原因二的解决方法:各种编码方式尝试解决:utf-8,gbk,ISO-8859-1,gb2312

**** 结论:原因1才是主要原因,与编码集无关

3.问题复现

1.python2

# result = str('a').decode('utf-8')
result = str('中').decode('utf-8')
print('是否是中文:', result >= u'\u4e00' and result <= u'\u9fff')

python环境:
python2.7
结果

  File "/Users/demo11.py", line 3
SyntaxError: Non-ASCII character '\xe6' in file /Users/demo11.py on line 3, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

结论:python2中虽然有decode方法,但也不能这么使用

2.python3

result = str('债').decode('utf-8')
print('是否是中文:', result >= u'\u4e00' and result <= u'\u9fff')

python环境:python环境
结果

Traceback (most recent call last):
  File "/Users/demo3.py", line 965, in <module>
    result = str('债').decode('utf-8')
AttributeError: 'str' object has no attribute 'decode'

4.解决方案

在python3中,先进行encode,再decode,才能将字符转换成unicode编码

class DecodeTestDemo:
	def __init__(self):
		pass
	
	def is_not_en_word(self, word:str):
    '''
    判断一个词是否是非英文词,只要包含一个中文,就认为是非英文词汇
    :param word:
    :return:
    '''
    count = 0
    for s in word.encode('utf-8').decode('utf-8'):
        if u'\u4e00' <= s <= u'\u9fff':
            count += 1
            break
    if count > 0:
        return True
    else:
        return False

if __name__ == '__main__':
	print(uchar >= u'/u4e00' and uchar <= u'/u9fa5')
	result = '债'.encode('utf-8').decode('utf-8')
	# result = str('债').decode('utf-8')
	print('是否是中文:', result >= u'\u4e00' and result <= u'\u9fff')
	
	decodeTestDemo = DecodeTestDemo()
	print('sex:', decodeTestDemo.is_not_en_word('sex'))
    print('sex啦:', decodeTestDemo.is_not_en_word('sex啦'))
    print('啦啦啦:', decodeTestDemo.is_not_en_word('啦啦啦'))

5.知识扩展

1.python中的decode方法

2.python中的编码集

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-14 23:50:39  更:2022-04-14 23:53:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 23:42:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计