假設我有一個字串 mystr = "mylist[0][1]" 和一個名為 mylist 的串列,其中包含許多單詞。我想列印串列中第一個單詞的第二個字母(如我的字串所示)。我怎樣才能做到這一點?當我嘗試使用 print(mystr) 時,它顯然會列印 mylist[0][1] 而不是我的信。
uj5u.com熱心網友回復:
使用類似這樣的方法:
mystr = "mylist[0][1]"
splited = mystr.split('[')
i = int(splited[1].replace(']', ''))
j = int(splited[2].replace(']', ''))
print(mylist[i][j])
uj5u.com熱心網友回復:
您可以使用該eval函式將字串解釋為代碼,但我不建議這樣做。
print(eval(mystr))
這是一個壞主意的原因有很多:
它非常慢。Python 解釋器必須決議字串,分析它并在程式中的這一點解釋它。如果它在一個回圈中,它必須在每次回圈中完成所有作業。
這可能是代碼注入的安全風險。如果字串的任何部分來自外部輸入,攻擊者可能會向它發送一些不需要的代碼,然后您的程式將執行這些代碼。
uj5u.com熱心網友回復:
globals()您可以嘗試通過字典訪問它,而不是評估包含物件識別符號的字串。這個程序有點繁瑣,可以做的更嚴謹一些,比如使用正則運算式。
mylist = [[1, 2, 3], [6, 7, 8]]
mystr = "mylist[0][1]"
key, coord1, coord2 = mystr.split('[')
# remove last character, ]
coord1 = int(coord1[:-1])
coord2 = int(coord2[:-1])
l = globals()[key][coord1][coord2]
print(l)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/454726.html
