美文网首页python技巧
python字符串高级拼接

python字符串高级拼接

作者: 陆_志东 | 来源:发表于2018-08-14 18:34 被阅读0次

    python中字符串拼接有三种方式

    方式一: + 不推荐使用

    str1 = "a"
    str2 = "b"
    str3 = "c"
    str4 = str1 + str2 + str3
    # 这种方式非常效率低下,这是因为python中字符串是不可变的类型,
    # 使用 + 连接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,
    # 当连续相加的字符串很多时(a+b+c+d+e+f+...) ,效率低下就是必然的了
    

    方式二: 打印 % 或者 format

    str1 = "a"
    str2 = "b"
    str3 = "%s%s" % (str1,str2)
    str4 = "{}{}".format(str1,str2)
    # 这种方式不需要申请很多次内存,而是一次性完成,所以这种方法推荐首选
    # 下面是for循环拼接一个字符串时候的使用
    content = u""
    for i in range(20):
        content= u"{}{}".format(content,str(i))
    

    方式三:专为列表拼接 join

    list1 = ["1","2","3"]
    str1 = "".join(list1)
    
    # 这种效率在列表拼接的时候是效率最高的
    # 不过需要注意的是有一个坑,使用join的时候,列表里面的每一项都必须是str类型
    # 否则会出错
    # 比如:
    list2  = ["1",2]
    str2 = "".join(list2)
    >>TypeError: sequence item 1: expected str instance, int found
    

    方式四: template方式

    # 该效率是字符串打印的进阶版,因为字符串打印 % {} 方式有可能会因为数量不够而报错
    from string import Template
    temp1 = Template("${s1} 11 ${s2} 22 ${s3}")  # ${} 设置变量占位符
    str2 = temp1.safe_substitute(s1="hello",s2="world")
    print(str2)  # hello 11 world 22 ${s3}
    str3 = temp1.safe_substitute(s1="hello",s2="world",s3="i'am comming")
    print(str3)  # hello 11 world 22 i'am comming
    # 这种方式打印不会出现问题
    

    方式五: F-strings效率最高

    # 注意这种方式,只有部分python版本支持
    str1 = "hello"
    str2 = " world!"
    num1 = 5
    def func1(x):
        return x*x
    
    print(f"{str1}{str2}")  # hello world!  加载变量
    print(f"{func1(num1)}") # 25 调用函数
    # f字符串 里面的{} 可以认为就是代码块,能够被python解析器运行
    

    相关文章

      网友评论

        本文标题:python字符串高级拼接

        本文链接:https://www.haomeiwen.com/subject/uwzvbftx.html