當前位置:首頁 » 編程語言 » 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 其他的字元以普通格式輸出

熱點內容
紅米手機錄音文件夾 發布:2025-02-13 19:41:33 瀏覽:235
android適配屏幕 發布:2025-02-13 19:40:30 瀏覽:792
解壓球0 發布:2025-02-13 19:38:19 瀏覽:642
早春開花植物如何配置 發布:2025-02-13 19:22:19 瀏覽:50
安卓怎麼獲得root錄音許可權 發布:2025-02-13 19:21:22 瀏覽:170
訪問學者留學基金委 發布:2025-02-13 19:21:13 瀏覽:430
制定編程 發布:2025-02-13 19:11:39 瀏覽:58
微商相冊安卓與蘋果機哪個方便 發布:2025-02-13 19:10:02 瀏覽:6
優酷視頻緩存設置 發布:2025-02-13 19:04:03 瀏覽:156
如何識別網路配置 發布:2025-02-13 19:04:02 瀏覽:300