Python: объединение строк и списков - PullRequest
3 голосов
/ 27 ноября 2011

У меня есть список счетчиков

counters = ['76195087', '963301809', '830123644', '60989448', '0', '0', '76195087', '4006066839', '390361581', '101817210', '0', '0']

и я хотел бы создать строку, используя некоторые из этих счетчиков ....

cmd = 'my_command' + counters[0:1]

Но я обнаружил, что не могу объединить строки и списки.

В конце я должен иметь строку, которая выглядит следующим образом:

my_command 76195087

Как мне вывести эти числа из их списка и заставить их вести себя как строки?

Ответы [ 4 ]

4 голосов
/ 27 ноября 2011

Вы можете join строк в списке, ну, join:

cmd = 'my_command' + ''.join(counters[:1])

Но вы не должны сначала создавать такую ​​команду и передавать ее os.popen или os.system. Вместо этого используйте модуль subprocess, который обрабатывает внутренние компоненты (и экранирует проблемные значения):

import subprocess
# You may want to set some options in the following line ...
p = subprocess.Popen(['my_command'] + counters[:1])
p.communicate()
4 голосов
/ 27 ноября 2011

Если вам нужен только один элемент списка, просто индексируйте этот элемент:

cmd = 'my_command ' + counters[0]

Если вы хотите объединить несколько элементов, используйте строковый метод join ():

cmd = 'my_command ' + " ".join(counters[0:2]) # add spaces between elements
3 голосов
/ 27 ноября 2011

Если вы просто хотите добавить один счетчик, вы можете использовать

"my_command " + counters[0]

или

"%s %s" % (command, counters[0])

, где command - это переменная, содержащая команду в виде строки.Если вы хотите добавить более одного счетчика, ' '.join() ваш друг:

>>> ' '.join([command] + counters[:3])
'my_command 76195087 963301809 830123644'
1 голос
/ 27 ноября 2011

Вы должны получить доступ к элементу списка, а не к подспискам списка, например:

cmd = 'my_command' + counters[0]

Так как, я полагаю, вам интересно использовать все счетчики в какой-то момент, используйте переменную для хранения индекса, который вы используете в данный момент, и увеличивайте его там, где считаете нужным (возможно, внутри цикла)

idx = 0
cmd1 = 'my_command' + counters[idx]
idx += 1
cmd2 = 'my_command' + counters[idx]

Конечно, старайтесь не увеличивать индексную переменную за пределы размера списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...