字符串格式问题并将字符串与数字连接

时间:2010-07-31 22:33:05

标签: python formatting

我来自c#背景,我这样做:

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

因此整数会自动转换为字符串并输出。

在python中我遇到错误:

print 'hello' + 10

我是否必须每次都转换为字符串?

我将如何在python中执行此操作?

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

我开始非常喜欢python,谢谢你的帮助!

4 个答案:

答案 0 :(得分:4)

来自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__方法将对象强制转换为字符串。[*] docs中有关于Python字符串格式的更详细的文档。这种行为在Python 3+中是不同的,因为所有字符串都是unicode。

如果您有一个字符串列表或元组,join方法非常方便。它在iterable的所有元素之间应用了一个分隔符。

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

如果您处于需要支持旧环境的环境中(例如Python< 2.5),通常应该避免字符串连接。请参阅评论中引用的文章。

[*] Unicode字符串使用__unicode__方法。

>>> u'3: %s' % ':)'
u'3: :)'

答案 1 :(得分:3)

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

你可以在python 2.7或3.1中跳过0

答案 2 :(得分:2)

除字符串格式外,您还可以像这样打印:

print "hello", 10

可以使用,因为它们是单独的参数,print会将非字符串参数转换为字符串(并在其间插入空格)。

答案 3 :(得分:1)

对于包含不同类型值的字符串格式,请使用%将值插入字符串:

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

所以在你的例子中:

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

在这个例子中,我使用%i作为替身。这取决于您需要使用的变量类型。 %s将用于字符串。有一个列表here on the python docs website