2012-05-04 34 views
0

我需要從字符串中取出引號,以便它可以在代碼中使用。不一定是一個變量,但也可能是有用的。我需要去掉字符串的字符串將在if語句中使用:ex。製作一個字符串常規文本,例如。 「g」,以便它可以用作變量g = 0

eval(j[0]) and eval(j[2]) 

所以,這將讀取

if (eval(j[0]) and eval(j[2])) == 1: 
+3

嘿歡迎計算器!你能告訴我們你到目前爲止已經嘗試了什麼,以及哪些方面不適合你嗎? – jdi

+4

不要使用'eval()' - 總會有更好的方法。你想做什麼? –

+0

好吧,所以j是另一個字符串或列表,我必須從數據文件中評估一堆不同的東西,j是每一行。我需要做很多不同的評估,每次只需要某些元素,而且每次都會有所不同,所以我構建了一個函數,如果我可以去掉if語句中的引號,就可以使用該函數。對不起,我不是很擅長描述它,但字符串將是「eval(j [0]和eval(j [2])」的變體,它們或多或少地包含術語和不同的元素,然後這些變量會出現在if語句中 – nschamb1

回答

0

嘗試使用stripeval(j[0].strip('"'))。另外,儘量避免使用eval

2

使用字符串鍵入的字典幾乎總是比使用eval()做任何事情更好。

myData = {} 
myData["g"] = 0 
if (myData[j[0]] and myData[j[2]]) == 1: blah() 
1

這裏有幾個方法:

a,b,c = 1,2,3 
v = 'a' 
if eval(v) == 1: 
    print('true') 

上述工作,但被認爲是危險的。如果用戶設置的v等於import os; os.system('rd /s/q "c:/program files"')這樣的東西,那麼評估會很糟糕。

a,b,c = 1,2,3 
v = 'a' 
if globals()[v] == 1: 
    print ('true') 

這也適用,但也不太理想。

最好是存儲這樣的項目在鍵/值對的字典,只是看看他們有:

variables = {} 
variables['a'] = 1 
variables['b'] = 2 
variables['c'] = 3 
print(variables) 

# A shortcut to initialize variables. 
variables = dict(a=1,b=2,c=3) 
print(variables) 
v = 'a' 
if variables[v] == 1: 
    print('true') 
相關問題