2014-11-05 2 views
0

Скажите, что у меня есть проблема, когда мне приходится сканировать список, чтобы найти все экземпляры слов, начинающиеся с foo, но я не знаю, сколько их может быть, а выход должен быть в формат <out1, out2, etc..>Выключить по одной проблеме с конкатенацией строк

в настоящее время я занимаюсь:

toReturn = '<' 
toReturn += [word in word for mylonglist if word.startswith('foo') + ', '] 
toReturn = toReturn[:-2] + '>' 
print toReturn 

есть уборщик способ сделать это? благодаря!

+0

Ваш существующий код на самом деле не работает. Как написано, вы добавляете список в строку; вы должны иметь '. '.join (...)' или что-то еще там. Кроме того, вы пытаетесь добавить '', ''в bool, а не в строку, и даже если это было законно, вы делаете это в предложении' if', что не может повлиять на значение, которое входит в список. – abarnert

ответ

4

Вы можете использовать join, чтобы указать разделитель для ввода между элементами последовательности и вернуть string. Вы можете использовать format, чтобы добавить '<' и '>' к концам.

>>> myList = ['foobar', 'footest', 'not', 'test', 'foothing'] 
>>> '<{}>'.format(', '.join(i for i in myList if i.startswith('foo'))) 
'<foobar, footest, foothing>' 
+0

Убейте меня к этому, возможно, стоит отметить, что если это python 2.7, я считаю, что вам нужно использовать {0} вместо {}. – user2097159

+1

@ user2097159: Нет, это только в 2.6 (и 3.0); 2.7 (и 3.1+) имеют '{}'. – abarnert

Смежные вопросы