在Python中构建字符串的最佳方法

14 投票
5 回答
57445 浏览
提问于 2025-04-30 16:16

Python有没有一种方法,可以方便地构建出像这样的字符串:

Bob 100 Employee Hourly

而不是像这样拼凑字符串:

EmployeeName + ' ' + EmployeeNumber + ' ' + UserType + ' ' + SalaryType

我想要的这个功能可能叫做字符串构建器,可能长得像这样:

stringbuilder(%s,%s,%s,%s, EmployeeName, EmployeeNumber, UserType, SalaryType, \n)
暂无标签

5 个回答

1

Python有两种简单的方法来构建字符串:

一种是字符串格式化,具体可以参考这里: https://docs.python.org/2/library/string.html

>>> '{0}, {1}, {2}'.format('a', 'b', 'c')
'a, b, c'

另一种是老式的 % 操作符,详细信息可以查看这个链接: https://docs.python.org/2.7/library/stdtypes.html#string-formatting

>>> print '%(language)s has %(number)03d quote types.' % \
...       {"language": "Python", "number": 2}
Python has 002 quote types.
3

因为 EmployeeNumber 是一个整数对象,或者你可能有很多整数类型的变量,你可以使用 str 函数把它们转换成字符串,这样就可以避免出现 TypeError 错误!

>>> ' '.join(map(str,[EmployeeName, EmployeeNumber,UserType , SalaryType]))
'Bob 100 Employee Hourly'
5

这里你有两个选择:

  • 使用字符串的 .join() 方法:" ".join(["This", "is", "a", "test"]),这个方法可以把列表里的内容用空格连接起来。
  • 使用百分号操作符来替换字符串中的部分内容:"%s, %s!" % ("Hello", "world"),这个方法可以把字符串中的%s替换成你想要的内容。
18

你的问题是关于Python 2.7的,但值得注意的是,从Python 3.6开始,我们可以使用f-strings

place = 'world'
f'hallo {place}'

'hallo world'

这个以f开头的前缀,叫做格式化字符串字面量或者f-string,在文档中有详细说明,关于词法分析的部分。

25

通常情况下,你会使用 str.join。这个方法需要一个可迭代的对象,也就是你想要连接在一起的内容,然后它会用一个分隔符把这些内容连接起来:

>>> ' '.join((EmployeeName, str(EmployeeNumber), UserType, SalaryType))
'Bob 100 Employee Hourly'

不过,既然你已经清楚字符串的组成部分,而且并不是所有部分都是普通字符串,那么使用 format 可能会更好:

>>> '{0} {1} {2} {3}'.format(EmployeeName, str(EmployeeNumber), UserType, SalaryType)
'Bob 100 Employee Hourly'

撰写回答