UCD是Unicode字符数据库(Unicode Character DataBase)的缩写。 UCD由一些描述Unicode字符属性和内部关系的纯文本或html文件组成。...与digit()不一样的地方是它可以任意表示数值的字符都可以,不仅仅限于0到9的字符。如果不是合法字符,会抛出异常ValueError。...: numeric() argument 1 must be a unicode character, not str >>> unicodedata.category(chr) 把一个字符返回它在...Unicode字符的不同表示序列被认为是等价的。如果两个或多个序列被认为是等价的,Unicode标准不规定哪一种特定的序列是正确的,而认为每一个序列只不过与其它序列等价。...大约来说,NFD和NFKD将可能的字符进行分解,而NFC和NFKC将可能的字符进行组合。
参考链接: Unicodedata – Python中的Unicode数据库 UCD是Unicode字符数据库(Unicode Character DataBase)的缩写。 ...与digit()不一样的地方是它可以任意表示数值的字符都可以,不仅仅限于0到9的字符。如果不是合法字符,会抛出异常ValueError。 ...: numeric() argument 1 must be a unicode character, not str >>> unicodedata.category(chr) 把一个字符返回它在UNICODE...Unicode字符的不同表示序列被认为是等价的。如果两个或多个序列被认为是等价的,Unicode标准不规定哪一种特定的序列是正确的,而认为每一个序列只不过与其它序列等价。 ...大约来说,NFD和NFKD将可能的字符进行分解,而NFC和NFKC将可能的字符进行组合。
开发者需要操作通用的Unicode字符串,而不是操作某种特定编码的字符串。...b'blue',而不是像你想的那样,输出blue本身。...这样的句柄默认需要使用Unicode字符串操作,而不能采用原始的bytes。习惯了Python 2的开发者,尤其容易碰到这个问题,进而导致程序出现奇怪的错误。...TypeError: write() argument must be str, not bytes 程序发生异常是因为在调用open函数时,指定的是'w'模式,所以系统要求必须以文本模式写入。...如果要从文件中读取(或者要写入文件之中)的是Unicode数据,那么必须注意系统默认的文本编码方案。若无法肯定,可通过encoding参数明确指定。
第一个问题是bytes和str看起来很像,但是它们不兼容。所以你必须明确字符序列的类型。...另外,格式化字符串中%操作符也类似。 第二个问题是关于文件处理的操作默认Unicode字符串而不是raw bytes。这可能导致意外的错误。...例如,我想要写二进制数据到文件中, with open('data.bin', 'w') as f: f.write(b'\xf1\xf2\xf3\xf4\xf5') 将报错 TypeError...: write() argument must be str, not bytes 问题在于使用的是文本模式'w',没用二进制写模式'wb'。...文本模式需要包含Unicode数据的str而不是包含二进制数据的bytes。'w'更改为'wb'修复问题。
书上用的 Python2 ,电脑装的3,有些地方不一样。例如 str 的 translate 方法在删除特定字符时死活不对。 调出help查了一下。...没有 deletechars 参数,难怪会有报错 TypeError - Translate takes one argument.(2 given) 而另一个数据类型bytes是有的。...Python2 中有 str 和 Unicode 两种类型,而 Python3已经严格区分了 bytes 和 str 两种数据类型,str为原来的unicode,bytes代替了之前的str。...现在你不能在需要 bytes 类型参数的时候使用 str 参数,反之亦然。...str.translate(...)就不适合使用deletechar,因为一个Unicode字符经过编码后可能会和一些英文ACSII码混淆,而bytes中对单个字节操作不会有这种问题。
s为字符串 s.isalnum() 所有字符都是数字或者字母 s.isalpha() 所有字符都是字母 s.isdigit() 所有字符都是数字 s.islower() 所有字符都是小写 s.isupper...() 所有字符都是大写 s.istitle() 所有单词都是首字母大写,像标题 s.isspace() 所有字符都是空白字符、\t、\n、\r 判断是整数还是浮点数 a=123 b=123.123...("2") # 2.0 unicodedata.digit("2") # 2 unicodedata.decimal("2") # 2 unicodedata.numeric("2") # 2.0...unicodedata.digit(b"3") # TypeError: must be str, not bytes unicodedata.decimal(b"3") # TypeError...: must be str, not bytes unicodedata.numeric(b"3") # TypeError: must be str, not bytes unicodedata.digit
字符类型之间的分拆将导致Python代码中出现两种常见情况: (1)操作的是包含UTF-8编码(或其他编码)的8位字节序列; (2)操作的是没有特定编码的Unicode字符串; 下面给出两个函数来完成这些情形下的转换...由打开的内置函数返回),写文件时默认Unicode字符串而不是字节序列。...xf3\xf4\xf5') TypeError: write() argument must be str, not bytes 抛出异常的原因是该文件是以写文本模式('w')而不是写二进制模式('wb...当文件处于文本模式时,写操作期望字符串包含Unicode数据,而不是字节序列。所以为了避免抛出异常,应该用“wb”模式打开data.bin文件。...(str)包含Unicode编码的值; (2)为了让程序更健壮,需要使用专门的函数来校验输入的是字节序列,还是字符串。
Python2也有两种表示字符序列的类型,分别叫做str和Unicode。与Python3不同的是,str实例包含原始的8位值;而unicode的实例,则包含Unicode字符。 ...with open('/tmp/random.bin','w') as f: f.write(os.urandom(10)) >>> TypeError: must be str, not bytes... 发生上述异常的原因在于,Python3给open函数添加了名为encoding的新参数,而这个新参数的默认值是’utf-8’。...这样在文件句柄上进行read和write操作时,系统就要求开发者必须传入包含Unicode字符的str实例,而不接受包含二进制数据的bytes实例。 ...为了解决这个问题,我们必须用二进制写入模式(’wb’)来开启待操作的文件,而不能像原来那样,采用字符写入模式(‘w’)。
其余参数:其余参数必须是其类型由格式字符串确定的变量的地址,可以是多个地址。...如果对象不是字符串对象,则引发TypeError。 C变量也可以声明为PyObject *。...只接受单段缓冲对象;对所有其他类型引发TypeError。(读写字符缓冲区)→[char *,int] “items”:对象必须是Python序列,其长度是项目中的格式单位数。...“;”:格式单元列表在这里结束; 冒号之后的字符串用作错误消息,而不是默认错误消息。 显然,“:”和“;” 互相排斥。...表示需要参数,这个参数在/usr/include/python2.7/methodobject.h有定义; * 第四个是一个字符串,它是该方法的__doc__属性,这个不是必须的,可以为NULL。
【Python】已解决报错: TypeError: the JSON object must be str, bytes or bytearray, not 'dict’的解决办法。...所以其参数param必须要是一个字典型的字符串。且字典的键必须用双引号来包裹。...dumps(param)是将json数据对象转换为文本字符串的函数,其函数名是dump string 的缩写,意思是输出字符串,所以其参数param必须要是json对象,也就是loads()函数返回的数据类型...= 'http://example.com/api' data = {'key': 'value'} response = requests.post(url, json=data) # 误传字典而不是...理解JSON是一种格式,而字典是Python中的数据结构,它们之间需要通过序列化和反序列化进行转换。 在处理JSON数据时,注意编码问题,确保使用UTF-8等标准编码。
当你将对象作为参数传递给函数时,新的局域变量创建了对原始对象的引用,而不是复制。...反斜杠是转义字符,意思是它备用来表示特殊字符,比如换行符\n或Unicode字符。...字符串对象有format方法,可以替换格式化的参数为字符串,产生一个新的字符串: In [74]: template = '{0:.2f} {1:s} are worth US${2:d}' 在这个字符串中...{1:s}表示格式化第二个参数为字符串。 {2:d}表示格式化第三个参数为一个整数。...字节和Unicode 在Python 3及以上版本中,Unicode是一级的字符串类型,这样可以更一致的处理ASCII和Non-ASCII文本。
使用缩进,而不是括号 Python使用空白字符(tab和空格)来组织代码,而不是像其它语言,比如R、C++、JAVA和Perl那样使用括号。...当你将对象作为参数传递给函数时,新的局域变量创建了对原始对象的引用,而不是复制。如果在函数里绑定一个新对象到一个变量,这个变动不会反映到上一层。因此可以改变可变参数的内容。...反斜杠是转义字符,意思是它备用来表示特殊字符,比如换行符\n或Unicode字符。...{1:s}表示格式化第二个参数为字符串。 {2:d}表示格式化第三个参数为一个整数。...这里概括介绍字符串处理,第8章的数据分析会详细介绍。 字节和Unicode 在Python 3及以上版本中,Unicode是一级的字符串类型,这样可以更一致的处理ASCII和Non-ASCII文本。
python2.x版本的字符编码有时让人很头疼,遇到问题,网上方法可以解决错误,但对原理还是一知半解,本文主要介绍 python 中字符串处理的原理,附带解决 json 文件输出时,显示中文而非 unicode...参考书籍:Python网络爬虫从入门到实践 by唐松 在python 2或者3 ,字符串编码只有两类 : (1)通用的Unicode编码; (2)将Unicode转化为某种类型的编码,如UTF-8,GBK...不接受 本来已经是unicode的编码的 参数,会有TypeError: Expected object of type bytes or bytearray, got: unicode...'>错误; 作为统一标准,unicode不能再被解码,如果UTF-8想转至其他非unicode,则必须(2)先decode 到unicode,在encode到其他非unicode的编码。...2.7.15,不是3.7,导致存储不成功的时候,一直以为是代码的问题。
python2.x版本的字符编码有时让人很头疼,遇到问题,网上方法可以解决错误,但对原理还是一知半解,本文主要介绍 python 中字符串处理的原理,附带解决 json 文件输出时,显示中文而非 unicode...参考书籍:Python网络爬虫从入门到实践 by唐松 在python 2或者3 ,字符串编码只有两类 : (1)通用的Unicode编码; (2)将Unicode转化为某种类型的编码,如UTF-8,GBK...不接受 本来已经是unicode的编码的 参数,会有TypeError: Expected object of type bytes or bytearray, got: unicode...’>错误; 作为统一标准,unicode不能再被解码,如果UTF-8想转至其他非unicode,则必须(2)先decode 到unicode,在encode到其他非unicode的编码。...2.7.15,不是3.7,导致存储不成功的时候,一直以为是代码的问题。
from hashlib import md5 def encrypt_md5(s): # 创建md5对象 new_md5 = md5() # 这里必须用encode()函数对字符串进行编码...,不然会报 TypeError: Unicode-objects must be encoded before hashing new_md5.update(s.encode(encoding=
int()函数的TypeErrorPython开发过程中,使用int()函数来转换或生成int类型的数据时,如果Python抛出并提示TypeError: int() argument must be...a string, a bytes-like object or a real number, not 'complex',那么原因在于传递给int()函数的参数类型有误,正如TypeError的提示,...int()函数的参数必须是string字符串(数值字符串)、类似字节对象、real number数字等,而不可以是complex复数类型的数据。...: int() argument must be a string, a bytes-like object or a real number, not 'complex'原文: TypeError:...int() argument must be a string, a bytes原因免责声明:内容仅供参考!
> 以上程序由于采用了严格模式,返回值必须是 int,但是计算结果是float,所以会报错,执行输出结果为: Fatal error: Uncaught TypeError: Return value...PHP 7 通过新的 IntlChar 类暴露出 ICU 中的 Unicode 字符特性。这个类自身定义了许多静态方法用于操作多字符集的 unicode 字符。 实例 是一个语言结构,它允许第一个参数是一个表达式,而不仅仅是一个待计算的 string或一个待测试的boolean。...0 - 使用或生成 Throwable, 仅仅是基于对象生成的警告而不是抛出对象(与 PHP 5 兼容) 参数 assertion 断言。...exception 在 PHP 7 中,第二个参数可以是一个 Throwable 对象,而不是一个字符串,如果断言失败且启用了 assert.exception 该对象将被抛出。
md.update("你好") TypeError: Unicode-objects must be encoded before hashing 由上图可知我们是没有对字符串进行编码...因为update()的括号里不支持将字符串对象引入,因为哈希在字节上工作,而不在字符或字符串上工作。...通俗点说就是,必须要将update括号里的字符串以一种编码格式(最好是utf-8)进行编码,转换为字节(bytes)格式 所以update后面的括号里的字符串必须进行编码,转换成字节 hexdigest...b后面单引号里的字符转换为字节,b后面只能是数字或字母,不能是中文;因为b单引号里的内容默认是使用ASCII进行编码,引号中不能出现中文,只能是字符 md=md.hexdigest() #hexdigest...print(md) #结果:b'~\xcah\x9f\r3\x89\xd9\xde\xa6j\xe1\x12\xe5\xcf\xd7' 注:字符不同于字符串,字符是指计算机中使用的文字和符号,不是字节
objects can be executed by an exec statement or evaluated by a call to eval(). source can either be a Unicode...This function raises SyntaxError if the compiled source is invalid, and TypeError if the source contains...参数source:字符串或者AST(Abstract Syntax Trees)对象。 参数filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。...参数model:指定编译代码的种类。可以指定为 ‘exec’,’eval’,’single’。 参数flag和dont_inherit:这两个参数暂不介绍,可选参数。...python3 >>> code="for i in range(0,10): print i" >>> cmpcode=compile(code,'','exec') >>> exec cmpcode 0 1 2
,新的局域变量创建了对原始对象的引用,而不是复制。...: 3 / 2 Out[57]: 1.5 要使用C语言风格的整除(即如果不是完整的整数,则删除小数部分),可以使用底除运算符//: In [58]: 3 // 2 Out[58]: 1 字符串 可以用单引号...: 'str' object does not support item assignment 如果需要修改字符串,必须用函数或方法创建一个新的字符串,例如使用字符串的replace方法: In [63...反斜杠\是转义字符,用来表示特殊字符,比如换行符\n或Unicode字符。...在早期的Python版本中,字符串都是字节,不使用Unicode编码。假如知道字符的编码,可以将其转化为Unicode。
领取专属 10元无门槛券
手把手带您无忧上云