python 拼接字符串字作为字符串使用,Python拼接字符串可以使用什么方法和运算符

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: