开发者社区> 问答> 正文

合并拼接字符串

你想将几个小的字符串合并为一个大的字符串

展开
收起
哦哦喔 2020-04-16 19:21:07 1101 0
2 条回答
写回答
取消 提交回答
  • 有点尴尬唉 你要寻找的东西已经被吃掉啦!

    如果需要合并的字符串是在一个序列或者 iterable 中,那么最快的方式就是使用 join() 方法。比如: parts = ['Is', 'Chicago', 'Not', 'Chicago?']

    print(' '.join(parts)) print(','.join(parts)) Is Chicago Not Chicago? Is,Chicago,Not,Chicago?

    如果只是合并少数几个字符串,使用加号(+)通常已经足够了: a = 'Is Chicago' b = 'Not Chicago?' print(a + ' ' + b) Is Chicago Not Chicago? 讨论

    字符串合并貌似很简单,看上去并不需要用一整节来讨论。 但是不应该小看这个问题,程序员通常在字符串格式化的时候因为选择不当而给应用程序带来严重性能损失。

    特别需要注意的是,使用加号(+)操作符去连接大量的字符串是非常低效率的, 因为加号连接会引起内存复制以及垃圾回收操作。 特别的,永远都不应像下面这样写字符串连接代码: s = '' for p in parts: s += p

    print(s) IsChicagoNotChicago?

    这种写法比使用 join() 方法的运行速度要慢很多,因为每一次执行+=操作,都会创建一个新的字符串对象。 最好是先收集所有的字符串片段然后再将它们连接起来。

    一个相对比较聪明的技巧是利用生成器表达式转换数据为字符串的同时,合并字符串,比如: data = ['ACME', 50, 91.1] print(','.join(str(d) for d in data)) ACME,50,91.1

    同样还得注意不必要的字符串连接操作。有时候容易在没有必要做连接操作的时候仍然多此一举。比如在打印的时候: print(a + ':' + b + ':' + c) # Ugly print(':'.join([a, b, c])) # Still ugly print(a, b, c, sep=':') # Better

    2020-04-17 09:31:30
    赞同 展开评论 打赏
  • 如果你想要合并的字符串是在一个序列或者 iterable 中,那么最快的方式就是使用 join() 方法。比如:
    
    >>> parts = ['Is', 'Chicago', 'Not', 'Chicago?']
    >>> ' '.join(parts)
    'Is Chicago Not Chicago?'
    >>> ','.join(parts)
    'Is,Chicago,Not,Chicago?'
    >>> ''.join(parts)
    'IsChicagoNotChicago?'
    >>>
    初看起来,这种语法看上去会比较怪,但是 join() 被指定为字符串的一个方法。 这样做的部分原因是你想去连接的对象可能来自各种不同的数据序列(比如列表,元组,字典,文件,集合或生成器等), 如果在所有这些对象上都定义一个 join() 方法明显是冗余的。 因此你只需要指定你想要的分割字符串并调用他的 join() 方法去将文本片段组合起来。
    
    如果你仅仅只是合并少数几个字符串,使用加号(+)通常已经足够了:
    
    >>> a = 'Is Chicago'
    >>> b = 'Not Chicago?'
    >>> a + ' ' + b
    'Is Chicago Not Chicago?'
    >>>
    加号(+)操作符在作为一些复杂字符串格式化的替代方案的时候通常也工作的很好,比如:
    
    >>> print('{} {}'.format(a,b))
    Is Chicago Not Chicago?
    >>> print(a + ' ' + b)
    Is Chicago Not Chicago?
    >>>
    如果你想在源码中将两个字面字符串合并起来,你只需要简单的将它们放到一起,不需要用加号(+)。比如:
    
    >>> a = 'Hello' 'World'
    >>> a
    'HelloWorld'
    >>>
    
    2020-04-16 19:21:16
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载