字典樣式的或者列表樣式的字串可以直接使用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...