2012-04-28 3 views
1

Если у меня есть список таких как:Очень простое форматирование Выпуск

[(10, 20), (50, 60), (100, 110)] 

Как я могу сделать это выглядеть следующим образом:

'10-20,50-60,100-110' 

если число пар в моем списке является переменным ?

Извините за такой простой вопрос. Но все, что я пробовал, например, замену «,» на «-», потерпело неудачу. Есть идеи?

ответ

5
>>> x = [(10, 20), (50, 60), (100, 110)] 
>>> ','.join('-'.join(map(str, t)) for t in x) 
'10-20,50-60,100-110' 
+0

Мог ли я сделать это «string» + '|' + (','. join ('-'. join (map (str, t)) для t в x)) и получить строку | 10-20,50-60,100-110 ?? –

+1

@PatrickCampbell, да, вы также можете сделать '' string |% s '%', '. Join (' - '. Join (map (str, t)) для t в x) ', чтобы избежать конкатентации строк. – huon

+0

Не могли бы вы помочь мне с похожим вопросом здесь, пожалуйста ?! http://stackoverflow.com/questions/10359993/going-to-a-certain-position-in-a-string –

1

Это то, что вы ищете?

data = [(10, 20), (50, 60), (100, 110)] 
for x in data: 
    print x[0], "-", x[1] 
+0

Да, что-то очень близко. Однако я хочу добавить это в строку, которую у меня уже есть. Так что бы я сделал, если бы у меня была строка + ????? –

+1

Я не уверен, как ваша программа структурирована, но вместо печати вы можете добавить результат к существующей строке? или если вы позже объедините свою программу, вы можете сделать список с печатаемыми данными, а затем добавить его позже на – Lostsoul

2

Другой (несколько более читабельным) способ сделать это форматирование является использование либо

A)% стиль строки форматирования:

data = [(10, 20), (50, 60), (100, 110)] 

fmt = "%d-%d, %d-%d, %d-%d" % (data[0][0], data[0][1], data[1][0], data[1][1],...) 

или со списком понимания:

fmt = ",".join("%d-%d" % i for i in data) 

B) Питон string.format метод:

fmt = ",".join("{0}-{1}".format(*i) for i in data) 
+0

Спасибо Джоэл, не могли бы вы посмотреть здесь, чтобы узнать, о чем я говорил раньше: http: // stackoverflow. com/questions/10359993/going-to-a-some-position-in-a-string –

+0

^^ Я не могу заставить это работать, я думаю, вы можете сделать простое исправление –

+0

@PatrickCampbell: Он отлично работает для меня. Что конкретно вы не можете заставить работать? –

0

Вы можете распаковать значения из списка в то время как итерация над ним в понимании:

>>> x = [(10, 20), (50, 60), (100, 110)] 
>>> ','.join('%d-%d' % (y,z) for (y,z) in x) 
'10-20,50-60,100-110' 
Смежные вопросы