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

Python 字符串格式问题和将字符串与数字连接,python,formatting,Python,Formatting,我来自c#背景,我做这件事: Console.Write("some text" + integerValue); 因此,整数会自动转换为字符串并输出 在python中,执行以下操作时会出现错误: print 'hello' + 10 我每次都必须转换成字符串吗 在python中如何实现这一点 String.Format("www.someurl.com/{0}/blah.html", 100); 我开始真正喜欢python了,谢谢你的帮助 >>> "www.someur

我来自c#背景,我做这件事:

Console.Write("some text" + integerValue);
因此,整数会自动转换为字符串并输出

在python中,执行以下操作时会出现错误:

print 'hello' + 10
我每次都必须转换成字符串吗

在python中如何实现这一点

String.Format("www.someurl.com/{0}/blah.html", 100);
我开始真正喜欢python了,谢谢你的帮助

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

您可以跳过python 2.7或3.1中的
0

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

>>> 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 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'
字符串格式通过使用对象的
\uu str\uu
方法将对象强制转换为字符串。[*]中提供了有关Python字符串格式的更详细文档。这种行为在Python3+中有所不同,因为所有字符串都是unicode

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

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

如果您所处的环境需要支持传统环境(例如Python,除了字符串格式之外,您还可以这样打印:

print "hello", 10

因为它们是独立的参数,所以print可以将非字符串参数转换为字符串(并在两者之间插入空格).

字符串连接在Python中不受欢迎。感谢@SilentGhost,我将修改我的帖子。我只听过有人告诉我要避免它。但是似乎表明它并不像我听说的那样邪恶。
%
操作符正在被弃用,取而代之的是
格式
方法(顺便说一句,其语法与相应的.NET语法非常相似).Strings在.NET和Java中也是不可变的,因此在这些系统中也会出现字符串连接的二次行为问题。然而,JIT编译器非常擅长识别此类模式,并用
StringBuilder
调用替换它们。像
'hello'+10
这样的简单连接永远不会成功这可能是个问题。
print "hello", 10