首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Pythonx00 和空字符串区别,以及在 Django 中

Python 中 \x00 和空字符串区别,以及在 Django 中坑 事情是这样,我有一个守护进程,不停地从 RabbitMQ 消费数据,然后保存到 MySQL。...通过单步调试,走到函数调用关系中,发现了问题关键所在。...不知道源码里为什么会有这样判断。 再回过头来看提示我为空那个字段值,其中的确有不可见字符 \x00。 到这里,这个问题也就明确了,那怎么解决呢?...其实很简单,在后台保存数据时,直接将 \x00 替换掉成空就可以了。 问题是解决了,但是 \x00 和空有什么区别呢?这就又涉及到 Python 编码问题了。...虽然两者都是空,但在很多方面都不相同,下面用一段简单代码来表现一下: >>> a = '\x00' >>> b = '' >>> >>> print(a) >>> print(b) >>> a =

2.8K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    《流畅Python》第四章学习笔记

    一个字符串是一个字符序列 字节序列:机器磁芯转储 Unicode:人类可读本文 把字节序列变成人类可读文本字符串就是解码「decode」 把字符串变成用于存储或传输字节序列激素编码「encode...」 ---- Python3「str」类型基本相当于Python2「unicode」类型 Python3默认使用「UTF-8」编码 Pyhon2默认使用ASCII ?...此外,以下错误处理方案被专门用于指定编解码器: 值 编解码器 含义 'surrogatepass' utf-8, utf-16, utf-32, utf-16-be, utf-16-le, utf-32...1.0, 'language': ''} print(chardet.detect(b'\xfe\xff\xff\xff\x00\x00\x01\x00\x02\x00')) # {'encoding'...()) # UTF-8 BOM 在Windows上使用open打开utf-8编码txt文件时开头会有一个多余字符\ufeff,它叫BOM,是用来声明编码等信息,但python会把它当作文本解析

    57410

    python 字符串转换long_python整数、字符串、字节串相互转换

    参考链接: Python字符串stringencode python数据转换很灵活,所以用日志记录下他们用法。  ...\x02\x00'  转为四个字节:  struct.pack(' b'\x01\x00\x00\x00\x02\x00\x00\x00'  整数to字符串  直接用函数  str(100)  字符串to...最常见编码方式就是UTF-8。但是,Python3str实例和Python2unicode实例都没有和特定二进制编码形式相关联。...‘b’字符加在字符串前面,对于python2会被忽略。加上’b’目的仅仅为了兼容python3,让python3以bytes数据类型(0~255)存放这个字符、字符串。  ...(UTF-16 or UTF-32, depending on how Python was compiled)  bytes = b’…’ literals = a sequence of octets

    1.9K20

    Python基础之:struct和格式化字符

    简介 文件存储内容有两种方式,一种是二进制,一种是文本形式。如果是以文本形式存储在文件中,那么从文件中读取时候就会遇到一个将文本转换为Python中数据类型问题。...实际上即使是文本形式存储,存储数据也是也是有结构,因为Python底层是用C来编写,这里我们也称之为C结构。 Lib/struct.py 就是负责进行这种结构转换模块。...如果不同CPU架构直接进行通信,就由可能因为读取顺序不同而产生问题。 填充只会在连续结构成员之间自动添加。 填充不会添加到已编码结构开头和末尾。...格式字符 我们来看下字符都有哪些格式: 格式 C 类型 Python 类型 标准大小(字节) x 填充字节 无 c char 长度为 1 字节串 1 b signed char 整数 1 B unsigned...填充影响 格式字符顺序可能对大小产生影响,因为满足对齐要求所需填充是不同: >>> pack('ci', b'*', 0x12131415) b'*\x00\x00\x00\x12\x13\x14

    88640

    一文学会Python标准库struct序列化与反序列化

    使用Python标准库struct序列化Python整数、实数、字节串时,需要使用struct模块pack()函数把对象按指定格式进行序列化,然后使用文件对象write()方法将序列化结果字节串写入以...表示序列化整数需要4个字节,也就是说整数序列化有限制,不能序列化任意大Python整数 pack(format, v1, v2, ...)...i', True, 3)值为b'\x01\x00\x00\x00\x03\x00\x00\x00',长度为8个字节。...解析:程序中格式字符串'if?...通过内置函数str()可以把任意Python对象转换为字符串然后再使用encode()方法转换为字节串最后使用struct进行序列化,在网络编程使用socket传输数据时经常用到struct序列化和反序列化

    1.3K20

    小生归一(五)md5扩展长度攻击

    1、md5加密原理 原python与安全系列续 又到了小生归一 笔记分享~有人期待嘛~ 1、MD5加密过程中512比特(64字节)为一组,属于分组加密,而且在运算过程中,将512比特分为32bit...(先把需要加密进行ASCII16进制编码) 2、我们关键利用是MD5填充,对加密字符串进行填充(比特第一位为1其余比特为0),使之(二进制)补到448模512同余,即长度为512倍数减64,最后...64位再补充为原来字符串长度,这样刚好补满512位倍数,如果当前明文正好是512bit倍数则再加上一个512bit一组。...(key+data)得到最后四个向量: A=0x78e608cb;B=0x8e4cf31e;C=0xbee106cb;D=0xdc6b9a26 用我前面给脚本,把ABCD改成上面的, 不过最后64位填充字符串长度时候...,字符串长度不是len($add),而是len($key+$data+$padding+$add)。

    1.4K10

    详解Python文本处理

    这篇文章主要介绍了Python文本处理,包括从最基本string模块基础使用和更进一步re模块使用,本文来自IBM官方开发者技术文档,需要朋友可以参考下 字符串 -- 不可改变序列 如同大多数高级编程语言一样...,变长字符串Python基本类型。...Python 在“后台”分配内存以保存字符串(或其它值),程序员不必为此操心。Python 还有一些其它高级语言没有的字符串处理功能。 在 Python 中,字符串是“不可改变序列”。...尽管不能“按位置”修改字符串(如字节组),但程序可以引用字符串元素或子序列,就象使用任何序列一样。Python 使用灵活“分片”操作来引用子序列,字符片段格式类似于电子表格中一定范围行或列。...如果正在使用处理文件标准模块,可以使用 cStringIO 模块将字符串转换成“虚拟文件”(如果需要生成模块子类,可以使用 StringIO 模块,初学者未必要这样做)。

    18210

    44.python bytes函数

    python bytes对于刚接触python小伙伴来讲,可能还是有点陌生!...empty bytes   # 2.定义指定个数字节序列bytes,默认以0填充,不能是浮点数 bytes(int) -> bytes of size given by the parameter...\x00\x00\x00\x00\x00\x00\x00\x00\x00' s1:           3.定义指定内容字节序列bytes...  True b is bb 结果是  True 注意: 1.python is和==区别 文章中有详细介绍:==是python标准操作符中比较操作符,用来比较判断两个对象value(值)是否相等...,例如下面两个字符串比较; 2.is也被叫做同一性运算符,这个运算符比较判断是对象间唯一身份标识,也就是id是否相同; 3.如果bytes初始化含有中文字符串必须设置编码格式,否则报错:TypeError

    1.2K30

    Python基础之:Python内部对象

    简介 Python中内置了很多非常有用对象,本文将会介绍Python内置函数,内置常量,内置类型和内置异常。 内置函数 Python 解释器内置了很多函数和类型,您可以在任何时候使用它们。...内置类型 python主要内置类型有数字、序列、映射、类、实例和异常。 逻辑值检测 在python中,任何对象都可以做逻辑值检测。...使用指定 fillchar 填充两边空位(默认使用 ASCII 空格符)。 如果 width 小于等于 len(s) 则返回原字符串副本。...str.zfill(width) 返回原字符串副本,在左边填充 ASCII '0' 数码使其长度变为 width。 正负值前缀 ('+'/'-') 处理方式是在正负符号 之后 填充而非在之前。...内置异常 Python中所有的异常都来自BaseException ,我们看下内置异常层级结构: BaseException +-- SystemExit +-- KeyboardInterrupt

    1.5K50

    python基础—序列化操作

    序列化python对象 需求: 把内存中各种数据类型数据通过网络传送给其他机器或客户端 把内存中各种数据类型数据保存到本地磁盘持久化 如果要将系统内数据通过网络传输给其他系统或客户端,我们通常需要把这些数据转化为字符串或字节串...把python对象转换成json字符串 decoding:把json字符串转换成python对象 json与python间数据类型对应关系 Python转JSON JSON ... True False None 说明: Python dict中字符串key被转换成JSON字符串时都会被转换为小写字符串...; Pythontuple,在序列化时会被转换为array,但是反序列化时,array会被转化为list; 由以上两点可知,当Python对象中包含tuple数据或者包含dict,且dict中存在非字符串...**separators参数_:_** 尽管indent参数可以使得数据存储格式变得更加优雅、可读性更强,但是那是通过添加一些冗余空白字符进行填充

    55410

    精心整理了100+Python字符串常用操作,收藏备用!

    如何在 Python 中小写字符串 通过多个标点符号分割字符串 Python 字符串填充Python 中检查两个字符串是否包含相同字符 在 Python 中查找给定字符串整个单词 查找所有出现字符串...、小写还是混合大小写 Python计数字符串出现在给定字符串中 在 Python3 中用前导零填充字符串Python 中检查两个字符串是否包含相同字母和数字 在Python字符串字符之间添加空格有效方法...在标点符号上拆分字符串Python 中比较字符串 用零填充数字字符串 找到两个字符串之间差异位置 Python填充字符串到固定长度 Python字符串查找示例 删除字符串开头零和结尾零...Python 填充字符串 Python 比较两个字符串保留一端差异 如何用 Python一个字符替换字符串所有字符 在字符串中查找子字符串并在 Python 中返回子字符串索引 从 Python...在 Python数字和字符串之间添加空格 如何在 Python 中去除空格 字符串中最后一次出现分隔符处拆分字符串Python中将字符串最后一个字母大写 使用指定字符居中对齐字符串 格式字符串中动态计算填充

    14.5K20

    编写兼容 Python 2.x 和 3.

    编写兼容Python2.x与3.x代码 当我们正处于Python 2.x到Python 3.x过渡期时,你可能想过是否可以在不修改任何代码前提下能同时运行在Python 2和3中。...为什么我们不用sys.stdout.write()呢,因为我们需要添加一个NEWLINE字符在字符串结尾来兼容这种行为(python2.x中write方法不会换行): # Python 2.x & 3...类,在Python2中,纯Python版本是StringIO模块,意味着访问时候是通过StringIO.StringIO,同样还有一个更为快速C语言版本,位于cStringIO.StringIO,不过这取决你...Python安装版本,你可以优先使用cStringIO然后是StringIO(如果cStringIO不能用的话)。...在Python3中,Unicode是默认string类型,但是如果你做任何和网络相关操作,很有可能你不得不用ASCII/字节字符串来操作,所以代替StringIO,你要io.BytesIO,为了达到你想要

    85930

    Python之struct

    大家好,又见面了,我是全栈君 struct是Python内建模块,用来在C语言中结构体与Python字符串之间进行转换,数据一般来自文件或网络 1....功能   (1) 按照指定格式将Python数据转换为字符串(该字符串为字节流)   (2) 按照指定格式将字节流转换为Python指定数据类型   (3) 处理二进制数据,如果用struct来处理文件的话...按照给定格式将数据转换成字符串(字节流)   (2) pack_into(fmt, buffer, offset, v1, v2, …)      按照给定格式将数据转换成字符串(字节流),并将字节流写入以...格式符   格式化字符串:指定数据类型、控制字节顺序、大小和对齐方式   下面2张表来自官网 Character Byte order Size Alignment @ native native 凑够...>>> b'zhanglin\x00\x00\x00\x1efemaleIT'   >>> (b'zhanglin', 30, b'female', b'IT') 发布者:全栈程序员栈长,转载请注明出处

    46410

    Python 二进制结构化数据处理和封装

    python 需要调用 C 程序,或是进行文件、网络操作时,需要对二进制结构化字节流进行处理,此时需要使用到 struct 这个模块提供方法。...详细方法可以查看 官方教程,这里以 perl pack 作为对比,使用 python 实现类似 perl 数据打包效果。...在 perl pack 方法中,提供了一种 Z* 写法,可以总是保证最后有一位空填充,在 python 中则可以这样实现: # 类比 perl pack "VVVVZ*", $max, 0,...0, 0, $user; fmt = "<4lx" + str(len(user) + 1) + "s" # 类比 perl Z*,总是保证最后有一位空填充 bindata = struct.pack...参考文献# struct — 将字节串解读为打包二进制数据 By Python pack TEMPLATE,LIST By Perl Perl pack用法及代码示例 Python使用struct处理二进制

    15830
    领券