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

时间:2014-10-30 16:51:45

标签: python python-2.7

Python是否具有整齐地构建如下所示字符串的功能:

Bob 100 Employee Hourly

不构建像这样的字符串:

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

我正在寻找的函数可能被称为StringBuilder,看起来像这样:

stringbuilder(%s,%s,%s,%s, EmployeeName, EmployeeNumber, UserType, SalaryType, \n)

5 个答案:

答案 0 :(得分:6)

通常你会寻找str.join。它接受一个包含你想要链接在一起的iterable的参数并将它应用于分隔符:

>>> ' '.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'

答案 1 :(得分:3)

这里有两个选项:

  • 使用字符串.join()方法:" ".join(["This", "is", "a", "test"])
  • 使用百分比运算符替换字符串的一部分:"%s, %s!" % ("Hello", "world")

答案 2 :(得分:2)

由于EmployeeNumber是一个int对象,或者你可能对你的变量有量,你可以使用str函数将它们转换为字符串以拒绝TypeError

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

答案 3 :(得分: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.

答案 4 :(得分:1)

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

const query: any = await this.manager.createQueryBuilder(OrderProduct, 'orderProduct'); 
query.select('DISTINCT product_id as productId , created_date as CreatedDate');
query.orderBy('created_date', 'DESC')
return query.getRawMany();
  

“你好,世界”

lexical analysis

上的文档中描述了这个place = 'world' f'hallo {place}' 前缀,称为格式的字符串文字 f-string