python中字串轉換成字典 列表 元組

2021-10-14 15:54:31 字數 1930 閱讀 9291

字典樣式的或者列表樣式的字串可以直接使用json.loads轉換

import json

# 字串轉字典

a = ''

b = json.loads(a)

print(b)

# 字串轉列表

a = '["key","value","key2","value2"]'

b = json.loads(a)

print(b)

eval() 函式也可以用來轉換字串,而且字典,列表,元組樣式的都可以轉

# 轉成字典

a = ''

b = eval(a)

print(type(b))

print(b)

# 轉成列表

a = '["key","value","key2","value2"]'

b = eval(a)

print(type(b))

print(b)

['key', 'value', 'key2', 'value2']

# 轉成元組

a = '("key","value","key2","value2")'

b = eval(a)

print(type(b))

print(b)

('key', 'value', 'key2', 'value2')

但是eval() 函式的功能主要是用來執行乙個字串表示式,並返回表示式的值。

a = '1+1+1'

b = eval(a)

print(type(b))

print(b)

3# eval()函式中的字串會執行

而且eval()函式有一定的危險性:

a = "__import__('os').system('***')"

# 如果輸入惡意字串就可以利用執行系統命令,操作檔案、刪除檔案等等操作

因為eval()函式的危險性,於是引出literal_eval()函式

literal_eval()會判斷需要計算的內容計算後是不是合法的python型別,如果是則進行運算,否則就不進行運算。

import ast

a = ast.literal_eval('1 + 1')

print(a)

2# 如果使用ast.literal_eval()執行危險操作都會拒絕執行並報錯,大大降低系統的危險性

a = "__import__('os').system('***')"

ast.literal_eval(a)

如果字串是:

a = '[(\'key\',\'__import__(\'os\').system(\'ls\')\'),(\'key2\',\'open(***).read()\')]'
雖然ast.literal_eval()是安全的,不會執行裡面的危險字串,但是會報錯而不會返回結果

而又需要把字串轉換,所以不能滿足要求,只能自己解析

b_list = 

a_str = '[(\'key\',\'__import__(\'os\').system(\'ls\')\'),(\'key2\',\'open(***).read()\')]'

str_h = a_str[1:-1]

temp_list = str_h.split('),(')

for p in temp_list:

pp = p.replace('(', '').replace(')', '').replace('\'', '')

kv_array = pp.split(',')

print(type(b_list))

print(b_list)

字串轉換成整數

題目詳情 輸入乙個表示整數的字串,把該字串轉換成整數並輸出,例如輸入字串 345 則輸出整數345。請完成函式strtoint,實現字串轉換成整數的功能。友情提醒 提交 之前,請複查下你的程式,比如當給的字串是如左邊所示的時候,有考慮到麼?當然,它們各自對應的正確輸出如右邊所示 假定你是在32位系統...

字串轉換成整數

輸入乙個表示整數的字串,把該字串轉換成整數並輸出,例如輸入字串 345 則輸出整數345。需要考慮的問題 1.由於整數可能不僅僅之含有數字,還有可能以 或者 開頭,表示整數的正負。2.處理非法輸入。在使用指標之前判斷這個指標是不是為空。3.輸入的字串中可能含有不是數字的字元。4.最後乙個需要考慮的問...

字串轉換成整數

字串轉換成整數。不廢話,貼 在網上找到了大神july的帖子,發現即使演算法非常細膩,但是我自己在電腦上執行卻不行,所以自己改了一下,應該沒有問題了。include include include using namespace std int strtoint const char str if i...