我来自c#背景,我这样做:
Console.Write("some text" + integerValue);
因此整数会自动转换为字符串并输出。
在python中我遇到错误:
print 'hello' + 10
我是否必须每次都转换为字符串?
我将如何在python中执行此操作?
String.Format("www.someurl.com/{0}/blah.html", 100);
我开始非常喜欢python,谢谢你的帮助!
答案 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。