Проблемы форматирования строки и конкатенации строки с номером - PullRequest
3 голосов
/ 01 августа 2010

Я исхожу из фона ac # и делаю это:

Console.Write("some text" + integerValue);

Таким образом, целое число автоматически преобразуется в строку и выводит.

В Python я получаюошибка, когда я делаю:

print 'hello' + 10

Нужно ли конвертировать в строку каждый раз?

Как бы я сделал это в Python?

String.Format("www.someurl.com/{0}/blah.html", 100);

Я начинаюдействительно люблю Python, спасибо за вашу помощь!

Ответы [ 4 ]

4 голосов
/ 01 августа 2010

Из Python 2.6:

>>> "www.someurl.com/{0}/blah.html".format(100)
'www.someurl.com/100/blah.html'

Для поддержки старых сред оператор % выполняет аналогичную роль:

>>> "www.someurl.com/%d/blah.html" % 100
'www.someurl.com/100/blah.html'

Если вы хотите поддерживать именованные аргументы, вы можете передать dict.

>>> url_args = {'num' : 100 }
>>> "www.someurl.com/%(num)d/blah.html" % url_args
'www.someurl.com/100/blah.html'

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

>>> '%d: %s' % (1, 'string formatting',)
'1:  string formatting'

Форматирование строк приводит объекты к строкам с использованием их методов __str__. [*] Существует гораздо более подробная документация по форматированию строк Python в документах . Это поведение отличается в Python 3+, так как все строки являются Unicode.

Если у вас есть список или кортеж строк, метод join довольно удобен. Он применяет разделитель между всеми элементами итерируемого.

>>> ' '.join(['2:', 'list', 'of', 'strings'])
'2: list of strings'

Если вы когда-либо находитесь в среде, где вам необходимо поддерживать устаревшую среду (например, Python <2.5), вам следует избегать конкатенации строк. Смотрите статью, на которую есть ссылки в комментариях. </p>

[*] В строках Unicode используется метод __unicode__.

>>> u'3: %s' % ':)'
u'3: :)'
3 голосов
/ 01 августа 2010
>>> "www.someurl.com/{0}/blah.html".format(100)
'www.someurl.com/100/blah.html'

вы можете пропустить 0 в Python 2.7 или 3.1.

2 голосов
/ 01 августа 2010

В дополнение к строковому форматированию вы всегда можете напечатать так:

print "hello", 10

Работает, поскольку это отдельные аргументы, а print преобразует не строковые аргументы в строки (и вставляет пробел между ними). ​​

1 голос
/ 01 августа 2010

Для форматирования строки, которая включает в себя различные типы значений, используйте% для вставки значения в строку:

>>> intvalu = 10
>>> print "hello %i"%intvalu
hello 10
>>> 

, в вашем примере:

>>>print "www.someurl.com/%i/blah.html"%100
www.someurl.com/100/blah.html

В этом примереЯ использую% I в качестве замены.Это меняется в зависимости от того, какой тип переменной вам нужно использовать.% s будет для строк.Здесь есть список на веб-сайте Python Docs .

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