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

3 投票
4 回答
2074 浏览
提问于 2025-04-16 02:08

我之前是用C#编程的,像这样做:

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

所以整数会自动转换成字符串,然后输出。

但是在Python中,当我这样做时:

print 'hello' + 10

我会遇到错误。

我每次都需要手动转换成字符串吗?

在Python中我该怎么做呢?

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

我开始真的很喜欢Python,感谢大家的帮助!

4 个回答

2

除了字符串格式化,你还可以这样打印:

print "hello", 10

这样做是可行的,因为这些是分开的参数,打印函数会把非字符串的参数转换成字符串(并在它们之间加一个空格)。

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__方法,把对象转换成字符串。[*] 关于Python字符串格式化的详细文档可以在这里找到。这个行为在Python 3及以上版本中有所不同,因为所有字符串都是unicode格式。

如果你有一个字符串的列表或元组,join方法非常方便。它会在可迭代对象的所有元素之间添加一个分隔符。

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

如果你在一个需要支持旧环境的情况下(例如Python <2.5),通常应该避免字符串拼接。可以参考评论中提到的文章。

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

>>> u'3: %s' % ':)'
u'3: :)'
3
>>> "www.someurl.com/{0}/blah.html".format(100)
'www.someurl.com/100/blah.html'

在Python 2.7或3.1中,你可以跳过0这个数字。

撰写回答