当前位置:首页 » 编程语言 » python对象转字符串

python对象转字符串

发布时间: 2023-06-10 18:13:28

‘壹’ python3 对象 |字典|json|yaml|字符串 相互转化

在研究 k8s 的yaml 配置文件的时候,我总担心自己一不小心 会写错,所以我向往 使用将对象 序列化 yaml 的形式,

其实 python object 可以 直接 转 yaml ,甚至也可以 直接 转成yaml文件!!!

这里 会经常用到几个 函数 vars() ast.

我们先尝试用最笨的方法 实现 object到yaml 的转化
在python对象 convert to dict 的形式,使用 vars()函数

然后 dict convert to json 使用 json.mps(dict)函数

然后 json converte to yaml 使用 ya= yaml.load(json.mps(dict)) 然后
再 yaml.safe_mp(ya,default_flow_style=False)

至此我们看到 从 python Object ---> dict ----> json ---> yaml 的转化

其中 obj dict json yaml 转 string ,只要 str()函数即可,或者 str(vars())结合

yaml 格式 写入到文件 ,需要注意的是, open()函数 的mode 一定要是 'w' ,不能是’wb', b代表是二进制写入
yaml 写入的是dict str,使用 ‘wb' 会报错,[yaml TypeError: a bytes-like object is required, not 'str']
【出现该错误往往是通过open()函数打开文本文件时,使用了‘rb’属性,如:fileHandle=open(filename,'rb'),则此时是通过二进制方式打开文件的,所以在后面处理时如果使用了str()函数,就会出现该错误,该错误不会再python2中出现。

具体解决方法有以下两种:

第一种,在open()函数中使用‘r’属性,即文本方式读取,而不是‘rb’,以二进制文件方式读取,可以直接解决问题。

第二种,在open()函数中使用‘rb’,可以在使用之前进行转换,有以下实例,来自: http://stackoverflow.com/questions/33054527/python-3-5-typeerror-a-bytes-like-object-is-required-not-str 】

其实 python object 可以 直接 转 yaml ,甚至也可以 直接 转成yaml文件!!!
比如我已经定义了一个 Dog python class,他有 好几个属性 并已经赋值初始化了

另外生成 yaml 对象

生成yaml文件

结果是

反过来 yaml ----> json ---> 持久化 json 文件 indent=1属性是为了让 json 不以单行展示,而是展开
注意的是 python 的 dict 和set 很相似 ,都是 { }, set 里是list, dict 是键值对
【# set object is not JSON serializable [plicate]


打开 demo.json

yaml ---> dict

yaml ---> python object

json --> dict
json.loads()

dict--> json
json.jumps()

str ---> dict
newdict=dict(str)

json -- > python object

一个python object无法直接与json转化,只能先将对象转化成dictionary,再转化成json;对json,也只能先转换成dictionary,再转化成object,通过实践,源码如下:

yaml --> python object
对yaml,也只能先转换成json --->dictionary,再转化成object,通过实践,源码如下:

dict -- ->python object

python对象 默认都有一个 私有的属性 dict 取值 就是 object的 字典形式, 赋值就就可以给对象属性对应赋值

例如json 转 对象

对象 转 json

Python之dict(或对象)与json之间的互相转化
在Python语言中,json数据与dict字典以及对象之间的转化,是必不可少的操作。

dict字典转json数据

对象转json数据

json数据转成dict字典

json数据转成对象

json的load()与mp()方法的使用
mp()方法的使用

‘贰’ Python中字符串与数组的转换方法

Python实现字符串与数组相互转换功能,具体如下:


1、字符串转数组:

‘叁’ eval在python中的用法

python中eval函数用法如下:

1、计算字符串中有效的表达式,并返回结果。

2、将字符串转成相应的对象(如list、tuple、dict和string之间的转换)。

3、将利用反引号转换的字符串再反转回对象。

eval函数主要是用来实现python中各种数据类型与str之间的转换。字符串中包含的什么,通过eval函数就可以输出什么。比如字符串里面包含的字典就输出字典,包含的列表就输出列表,但是字符串相应的格式吵蔽缓一定要输入正确,否则会报错。

通常在Python中使用这个函数,可以对一个字符串进行操作,最后返回的是一个表示式中的值,可以通过字符函数,也可以将一个字符串转换成一个列表、元组或者是一个字典。

eval函数的应用

1、字符串转换成列表

刚升模才说了,这个函数是可以将任意的字符串转换成那三种基本的数据类型的。在代码并羡中,a变量存放的是一个字符串类型数据,通过eval函数进行转换,后面b变量存的是列表类型数据。

2、eval返回表达式的值

eavl函数除了对类型进行转换之外,还可以将参数设置为一个表达式,如何对表达式进行返回。

‘肆’ python怎么把字符串变成数字格式化

1. python 字符与数字如何转换
python中字符与数字相互转换用chr()即可。

python中的字符数字之间的转换函数

int(x [,base ]) 将x转换为一个整数

long(x [,base ]) 将x转换为一个长整数

float(x ) 将x转换到一个浮点数

plex(real [,imag ]) 创建一个复数

str(x ) 将对象 x 转换为字符串

repr(x ) 将对象 x 转换为表达式字符串

eval(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象

tuple(s ) 将序列 s 转换为一个元组

list(s ) 将序列 s 转换为一个列表

chr(x ) 将一个整数转换为一个字符

unichr(x ) 将一个整数转换为Unicode字符

ord(x ) 将一个字符转换为它的整数值

hex(x ) 将一个整数转换为一个十六进制字符串

oct(x ) 将一个整数转换为一个八进制字符串

chr(65)='A'

ord('A')=65

int('2')=2;

str(2)='2'

(4)python对象转字符串扩展阅读:

python数字转换为字符串主要包括两种形式:第一种是str(),将值转换为用户便于阅读的形式;另一种是repr(),将值转换为合法的python表达式。

>>> print repr("Hello, world!")

'Hello, world!'

>>> print repr(10000L)

10000L

>>> print str("Hello, world!")

Hello, world!

>>> print str(10000L)
2. python怎么实现字符串和数字的转换
#py3

from functools import rece

DIGITS={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}

def char2num(s): #单个字符转数字

return DIGITS[s]

def str2int(s):#整数字串转化整数,不支持浮点数.浮点数得另写一个

if s[0]=='-': #要判断一下该数字有没有符号

return -rece(lambda x,y:10*x+y,map(char2num,s[1::])) #返回负数

else:

return rece(lambda x,y:10*x+y,map(char2num,s)) #返回正数

a='-123'

print(100+str2int(a))
3. 关于python的字符串格式化
在python中也有类似于c中的printf()的格式输出标记。

在python中格式化输出字符串使用的是%运算符,通用的形式为格式标记字符串 % 要输出的值组其中,左边部分的”格式标记字符串“可以完全和c中的一致。右边的'值组'如果有两个及以上的值则需要用小括号括起来,中间用短号隔开。

重点来看左边的部分。左边部分的最简单形式为:%cdoe其中的code有多种,不过由于在python中,所有东西都可以转换成string类型,因此,如果没有什么特殊需求完全可以全部使用'%s'来标记。

比如:'%s %s %s' % (1, 2.3, ['one', 'two', 'three'])它的输出为'1 2.3 ['one', 'two', 'three']',就是按照%左边的标记输出的。虽然第一个和第二值不是string类型,一样没有问题。

在这个过程中,当电脑发现第一个值不是%s时,会先调用整型数的函数,把第一个值也就是1转成string类型,然后再调用str()函数来输出。前面说过还有一个repr()函数,如果要用这个函数,可以用%r来标记。

除了%s外,还有很多类似的code:整型数:%d无符号整型数:%u八进制:%o十六进制:%x %X浮点数:%f科学记数法: %e %E根据数值的不同自动选择%e或%f: %g根据数值的不同自动选择%E或%f: %G就跟前面说用\进行转义一样,这里用%作为格式标记的标识,也有一个%本身应该如何输出的问题。如果要在”格式标记字符串“中输出%本身,可以用%%来表示。

上面说的只是格式标记的最简间的形式,来看复杂一点的:'%6.2f' % 1.235在这种形式中,在f的前面出现了一个类似小数的6.2它表示的意思是,总共输出的长度为6个字符,其中小数2位。还有更复杂的:'%06.2f' % 1.235在6的前面多了一个0,表示如果输出的位数不足6位就用0补足6位。

这一行的输出为'001.24',可以看到小数也占用一位。类似于这里0这样的标记还有-、+。

其中,-表示左对齐,+表示在正数前面也标上+号,默认是不加的。最后来看最复杂的形式:'%(name)s:%(score)06.1f' %{'score':9.5, 'name':'newsim'}这种形式只用在要输出的内容为dictionary(一种python的数据类型)时,小括号中的(name)和(score)对应于后面的键值对中的键。

前面的例子可以看到,”格式标记字符串“中标记的顺序和"要输出的值组"中的值是一一对应的,有顺序,一对一,二对二。而在这种形式中,则不是,每个格式标记对应哪个值由小括号中的键来指定。

这行代码的输出为:'newsim:0009.5'。有时候在%6.2f这种形式中,6和2也不能事先指定,会在程序运行过程中再产生,那怎么输入呢,当然不能用%%d.%df或%d.%d%f。

可以用%*.*f的形式,当然在后面的”要输出的值组“中包含那两个*的值。比如:'%*.*f' % (6, 2, 2.345)就相当于'%6.2f' % 2.345。

这是这本书到此为止看起来最复杂的内容。不过如果记不住,或不想那么耐烦,完全可以全部用%s代替,或者用多个"+"来构造类似的输出字符串。

这里的%真有点除法的味道,怪不得设计者会选择用%这个除号。象C 中的sprintf函数一样,可以用“%”来格式化字符串Table 3.1. 字符串格式化代码格式 描述%% 百分号标记%c 字符及其ASCII码%s 字符串%d 有符号整数(十进制)%u 无符号整数(十进制)%o 无符号整数(八进制)%x 无符号整数(十六进制)%X 无符号整数(十六进制大写字符)%e 浮点数字(科学计数法)%E 浮点数字(科学计数法,用E代替e)%f 浮点数字(用小数点符号)%g 浮点数字(根据值的大小采用%e或%f)%G 浮点数字(类似于%g)%p 指针(用十六进制打印值的内存地址)%n 存储输出字符的数量放进参数列表的下一个变量中。

‘伍’ Python tuple怎么转成字符串

用提取列表和元组值的方法,取得日期字符串就行了,具体程序如下

a=[('2019-02-22',),('2019-02-25',),('2019-02-26',),('2019-02-27',),('2019-02-28',),('2019-03-01',),('2019-03-04',)]

foriinrange(len(a)):

print(a[i][0])

源代码(注意源代码的缩进)

‘陆’ python基础教程-数据类型详解

python提供了多种的数据类型,用来存放数据。其中数据类型中又包括:字符串,布尔类型指销,整数,浮点数,数字,列表,元组,字典,日期。
1、字符串
a='this is string'print aa="this is string"print aa='''this is stringthis is stringthis is string'''print a
布尔类型
常见的用橡逗陆于循环判断中
整数
a=int(80.9741)print a
浮点数
a= float(80.974)print a
字符类型的转换
int(x [,base]) 将x转换为一个整数
float(x ) 将x转换到一个浮点数
complex(real [,imag]) 创建一个复数
str(x) 将对象x转换为字符串
repr(x) 将对象x转换为表达式字符串
eval(str) 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s) 将序列s转换为一个元组
list(s) 将序列s转换为一个列表
chr(x) 将一个整数转换为一个字符
unichr(x) 将一个整数转换为Unicode字符
ord(x) 将一个字符转换为它的整数值
hex(x) 将一个整数转换为一个十六进制字符串
oct(x) 将一个整数转换为一个八进制字符串
列表
L1 = [1,2,3]print L1L2 = ['abc']print L2L3 = ["a","b","c"]print L3L = list("Python")print Lprint L[0]print L[3]print L[-1]
Python的元组与列表类似,不同之处在于元组的元素不能修改;元组使用小括号(),列表使用方括号[];元组创建很简单,只需要在括号中添加元素,并使用逗号(,)隔开即可,例如:
tup1 = ('physics', 'chemistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = "a", "b", "c", "梁顷d";
字典(dictionary)是除列表之外python中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典由键和对应的值组成。字典也被称作关联数组或哈希表。基本语法如下:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'};
时间日期
import time, datetime;localtime = time.localtime(time.time())today = datetime.date.today()print "Local current time :", today

‘柒’ python3 16进制字符串、列表、字符串之间的转换

在Python操作数据内容时,多数情况下可能遇到下面3种类型的数据处理:

hexstring 如:ƇC532145697A8B6F'

str 如:'x1Cx53x21x45x69x7Ax8Bx6F'

list 如:[0x1C, 0x53, 0x21, 0x45, 0x69, 0x7A, 0x8B, 0x6F]

各种第三方模块(如pyDes),或者自己写的接口中,可能存在由于类型不统一需要在这3种数据中来回切换的情况。

需要用到的核心的方法如下:

list() 将对象转换为list

str() 将对象转换为str

bytearray() 将对象转换为bytearray

bytearray.fromhex() 将对象从hexstring转换为bytearray

binascii.b2a_hex() 将对象从str转换为hexstring

如:[0x53, 0x21, 0x6A] -> 'x53x21x6a'

方法:list -> bytearray -> str

如:'x53x216a' -> [0x53, 0x21, 0x6A]
方法:逐个字符转成十进制

如: [0x53, 0x21, 0x6A] -> �A'
方法:list -> bytearray -> str -> hexstring

如: �A' -> [0x53, 0x21, 0x6A]
方法:hexstring -> bytearray -> list

如: �A' -> 'x53x21x6A'
方法:hexstring -> bytearray -> str

以上内容转自: https://blog.csdn.net/diaoxuesong/article/details/72123415#

‘捌’ python基础:内置函数、方法、转义字符大全

在写python程序时,常能用到一些函数和方法,总结一下,保存起来,方便查询。

一、内置函数

# abs()获取数字绝对值

# chr(i)数字转换为字符类型

# divmod() 获取两个数值的商和余数

# enumerate() 将可遍历序列组合为索引序列

# float()转换为浮点数

# format() 格式化字符串

# int()转换为整数 

# input() 接受用户输入内容

# len() 计算元素个数

# max() 返回最大值

# min() 返回最小值

# math.ceil() 返回指定数值的上舍整数

# open()打开文件并返回文件对象

# pow() 幂运算

# print()打印输出 

# range() 生成器

# reversed()反转所有元素

# round()四舍五入求值

# sorted()对可迭代对象进行排序 

# str() 转换为字符串

# sum() 求和

# set() 创建集合

# tuple() 将序列转换为元组

# zip()将可迭代对象打包成元组

二、方法

# append() 添加列表元素

# capitalize()首字母转换为大写 

# count()字符出现次数

# close() 关闭文件

# decode() 解码字符串

# dict.keys() 获取字典所有的键

# find()字符串首次出现的索引

# f.read() 读取文件内容

# dict.update()更新字典

# dict.items() 获取字典键/值对

# dict.get() 返回指定键的值

# encode() 编码字符串

# list.sort() 排序列表元素

# index() 元素首次出现的索引

# isdigit() 判断字符串是否只由数字组成

# isupper() 是否所有字母都为大写

# isnum() 判断字符串是否由字母和数字组成

# islower() 是否所有字母都为小写

# isdecimal() 检查字符串是否只包含十进制字符

# isalpha() 检测字符串是否为纯字母

# random.shuffle()随机排序

# random.sample()返回无重复随机数列表

# random.choice() 返回一个随机元素

# random.randint() 生成指定范围的随机整数

# random.randrange() 生成指定范围的指定递增基数随机整数

# pop() 删除列表中的元素

# remove()删除列表中的指定元素

# strip()去除空格

# lstrip()去除左侧空格

# rstrip() 去除右侧空格

# readline() 读取单行内容

# root.after() Tkinter中等待一段时间后再执行命令

# str.isnumeric() 验证字符串是否为数字(适用于Unicode)

# split()分割字符串

# ord() 将字符转换为整数

# replace() 字符串替换

# ljust() 左对齐填充

# rjust() 左对齐填充

# readlines() 读取所有行内容

# datetime.datetime.now() 返回指定时区的本地日期时间

# datetime.datetime.today() 获取当前本地日期的date对象

# datetime.utcnow() 返回当前UTC时间的datetime对象

# time.strptime()把时间字符串解析为元组

# time.time()返回当前时间的时间戳

# time.sleep()暂停指定秒数

# time.strftime() 返回指定格式的日期字符串

# time.mktime() 接收时间元组并返回时间戳

# os.getcwd() 获取当前工作目录

# os.listdir() 获取指定路径下的目录和文件列表

# os.makedirs() 递归创建目录

# os.rename() 重命名目录或文件

# os.path.exists() 判断路径是否存在

# upper() 全部转换为大写字母

# lower()  全部转换为小写字母

# sys.stdout.write() 标准输出打印

# sys.stdout.flush()刷新输出 

# shutil.() 复制单个文件到另一文件或目录

# write() 写入文件内容

# winsound.Beep() 打开电脑扬声器

# zfill() 在字符串前面填充0

三、循环语句

# break终止当前循环

# continue 终止本循环进入下一次循环

# with open() as file 以with语句打开文件(数据保存)

四、转义字符

\ 行尾续行符

\' 单引号 

\'' 双引号

\a 响铃

\e 转义

\n 换行

\t 横向制表符

\f 换页

\xyy 十六进制yy代表的字符

\\反斜杠符号

\b 退格

\000 空

\v 纵向制表符

\r 回车

\0yy 八进制yy代表的字符

\other 其他的字符以普通格式输出

热点内容
python中ord函数 发布:2025-05-16 10:14:25 浏览:340
电脑启动后无法连接服务器 发布:2025-05-16 10:06:39 浏览:984
jar包编译过程 发布:2025-05-16 10:03:37 浏览:679
选举源码 发布:2025-05-16 09:58:59 浏览:749
超级访问陈小春应采儿 发布:2025-05-16 09:43:29 浏览:479
缓存视频合并工具最新版 发布:2025-05-16 09:35:03 浏览:195
花雨庭服务器ip地址和端口 发布:2025-05-16 09:34:58 浏览:240
同时修改多台服务器管理地址工具 发布:2025-05-16 09:20:36 浏览:422
什么配置就能玩地平线 发布:2025-05-16 09:13:46 浏览:83
python旋转图片 发布:2025-05-16 09:13:40 浏览:639