2016-09-02 12 views
-2

Я новичок в python, у меня есть var (string), который является запросом Xpath. Я хочу передать переменную i в запрос Xpath. Простой пример ниже:Динамически вызывать переменную внутри строки в функции

i = 0 
self.var = 'li['+i+']' 

def test(self): 
    while(i<10): 
    print self.var # 'li[0]', 'li[1]' ... 
    i += 1 
+0

Если вы хотите конвертировать 'i' в строку, вам нужно преобразовать число python в Google. ** Изменить **: ответ - 'str (i)'. –

+0

@ AndrasDeak, если они знают, что делать в Google, они не будут задавать вопрос. Также спасибо за downvote –

+0

NOOOOO NO EVAL. @Padraic, я знаю, я говорю им прямо сейчас;) Если бы не ваш собеседник, я бы тоже сам добавил это решение. В комментарии. –

ответ

1

Вам нужно будет позвонить str по переменной i, вы не можете сцепить в Int и ул:

'li['+str(i)+']' 

Или просто использовать str.format, вы также можете использовать диапазон использования, а индекс xpath также основан на 1, так что вы начинаете с 1:

self.var = "li[{}]" 
def test(self): 
    for i in range(1, 11): 
     print self.var.format(i) 

Или при использовании LXML для запросов XPath вы можете использовать Xpath variable, как показано ниже:

.xpath("li[$i]", i=i) 
+1

Почему именно ответ был проголосован? заботиться о том, чтобы объяснить вниз-избирателя? –

+2

@ Mr.goosberry Я надеялся надавить Padraic на удаление своего ответа [из-за этого] (http://stackoverflow.com/questions/39301564/dynamically-call-a-var-inside-string-in-function#comment65937276_39301564). Моя основная забота заключается в том, что очень простые вопросы следует удалять раньше, чем позже, и это не происходит автоматически при наличии утвержденных/принятых ответов. Теперь есть еще один ответ, и нет возможности занять место, поэтому я отменяю свой downvote. –

+1

self.var = "li [{}]" Спасибо. – Med

0

Вы можете создать список с первой строкой, целым числом, и второй строкой.

i = 0 
var = ['li[',i,']'] 

def test(var):  
    while(var[1]<10): 
     print var[0]+str(var[1])+var[2] 
     var[1] += 1 

test(var) 
Смежные вопросы