python 拼接字符串字作为字符串使用,Python拼接字符串可以使用什么方法和运算符
问题描述
当解析文件时,需要将解析的数据串拼接成新的字符串。通常,这个过程是一个循环,不断地拼接字符串。如果这个过程循环次数少,不同拼接方式差别不大。如果循环次数超过10000次,你会发现明显变慢了。初始错误代码(简化版)如下:
类处理器(对象):
def __init__(self):
self.outputStr=
def __printContent(自身):
对于键,cmds.items()中的val:# 10000
self . output str=self . output str val *(self。_ _ field widthdict[key]-len(val))
字符串拼接的解决方案
通过直接()运算符拼接
你好 世界 !
“你好,世界!”
这样进行字符串拼接的操作效率很低,因为在python中拼接两个字符串时,会生成一个新的字符串,需要重新申请内存才能生成一个新的字符串,拼接更多的字符串时自然会影响效率。其他语言也是如此,比如golang。如果你没有管理好自己的内存,这个操作就要小心了。
通过str.join()方法拼接
strlist=[Hello , , World ,!]
.加入(列表)
“你好,世界!”
此方法通常用于将集合转换为字符串“”。join(),其中“”可以是空字符或任何其他字符。当它是任何其他字符时,集合中的字符串将由该字符分隔。
通过str.format()方法拼接
{} {}!。格式(“你好”、“世界”)
“你好,世界!”
用这种方式拼接字符串时,需要注意的是,字符串中{0}的个数要和format方法中的参数个数一致,否则会报错。
由(%)操作员拼接
%s %s!%(你好,世界)
“你好,世界!”
这种方式和str.format()的使用方式基本一致。
通过()多线拼接
(
.你好
.
.世界
.!
.)
“你好,世界!”
当遇到未闭合的括号时,Python会自动将多行拼接成一行。
字符串模块中的模板对象拼接
从字符串导入模板
s=模板( ${s1} ${s2}!)
s.safe_substitute(s1=Hello ,s2=World )
“你好,世界!”
模板首先通过模板初始化一个字符串来实现。这些字符串包含一个接一个的键。通过调用substitute或safe _ subsititute,键值对应于方法中传递的参数,从而在指定位置导入字符串。这种方法的优点是您不需要担心由不一致的参数引起的异常,例如:
从字符串导入模板
s=模板( ${s1} ${s2} ${s3}!)
s.safe_substitute(s1=Hello ,s2=World )
Hello World ${s3}!
使用F弦拼接
在python 3 . 6 . 2版本中,PEP 498提出了一种新型的字符串格式化机制,这种机制被称为“字符串插值”,或者更常见的称为F字符串。F-strings为将Python表达式嵌入字符串进行格式化提供了一种清晰便捷的方法:
s1=你好
s2=世界
f“{ S1 } { S2 }!”
“你好,世界!”
在F字符串中,我们还可以执行以下函数:
定义功率(x):
.返回x*x
.
x=5
f{x} * {x}={power(x)}
5 * 5=25
而且F-strings运行速度非常快,比%-string和str.format()快很多。
性能比较和选择结论
字符串拼接,无论数据大小,首选join()函数可读性更好;
在类格式化上,%和format()拼接差别不大,但format()函数可读性更好;
当数据量小于10万时,F-strings在字符串拼接方面的性能优于其他拼接方式(前提是Python版本必须大于3 . 6 . 2);
当数据量小,对程序性能要求不高,而程用脑过多时,选择拼接;
在处理字符串格式时,format()函数和F-strings方法是首选。
解决办法
对于这个场景,可以迂回解决。它首先存储在数组中,然后使用join。代码如下:
类处理器(对象):
def __init__(self):
self.outputStr=
def __printContent(自身):
结果=[]
对于键,cmds.items()中的val:# 10000
tempStr= *(self。__fieldWidthDict[key]-len(val))
result.append(val,tempStr, )
self.outputStr= 。连接(结果)
参考文章
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。