问题:将许多小字符串合并成一个大的字符串

解决方案:

1、针对少数量的字符串:+

2、针对大量的字符串对象的连接,更高效的方法:join()

3、更加复杂的字符串:format()

  1. >>> parts=['Is','Chicago','Not','Chicago?']
  2. >>> ','.join(parts)
  3. 'Is,Chicago,Not,Chicago?'
  4. >>> a='Is Chicago'
  5. >>> b='Not Chicago?'
  6. >>> '{} {}'.format(a,b)
  7. 'Is Chicago Not Chicago?'
  8. >>> '{}{}'.format(a,b)
  9. 'Is ChicagoNot Chicago?'
  10. >>> '{}*{}'.format(a,b)
  11. 'Is Chicago*Not Chicago?'
  12. >>> '{}*&%${}'.format(a,b)
  13. 'Is Chicago*&%$Not Chicago?'
  14. >>> a+' '+b
  15. 'Is Chicago Not Chicago?'
  16. >>> 'Hello' 'World'
  17. 'HelloWorld'
  18. >>> print (a,b,sep=':') #更好的使用方法
    Is Chicago:Not Chicago?

一个技巧:利用生成器表达式在将数据转换为字符串的同时完成连接操作

  1. >>> data=['AQSC',50,91.2]
  2. >>> ','.join(str(d) for d in data)
  3. 'AQSC,50,91.2'
  4. >>>

最后,但也是最重要的是,若我们编写的代码要从许多短字符串中构建输出,则应考虑编写生成器函数,通过yield关键字生成字符串片段;

  1. # example.py
  2. #
  3. # Example of combining text via generators
  4.  
  5. def sample():
  6. yield "Is"
  7. yield "Chicago"
  8. yield "Not"
  9. yield "Chicago?"
  10.  
  11. # (a) 使用join()将他们简单的连接起来
  12. text = ''.join(sample())
  13. print(text)
  14. print('======================')
  15. # (b) 将这些片段重定向到I/O
  16. import sys
  17. for part in sample():
  18. sys.stdout.write(part)
  19. sys.stdout.write('\n')
  20. print('**************************')
  21. # (c) 以混合的方式将I/O操作智能化地结合在一起
  22. def combine(source, maxsize):
  23. parts = []
  24. size = 0
  25. for part in source:
  26. parts.append(part)
  27. size += len(part)
  28. if size > maxsize:
  29. yield ''.join(parts)
  30. parts = []
  31. size = 0
  32. yield ''.join(parts)
  33.  
  34. for part in combine(sample(), 32768):
  35. sys.stdout.write(part)
  36. sys.stdout.write('\n')
  1. >>> ================================ RESTART ================================
  2. >>>
  3. IsChicagoNotChicago?
  4. ======================
  5. IsChicagoNotChicago?
  6. **************************
  7. IsChicagoNotChicago?
  8. >>>

【python cookbook】【字符串与文本】14.字符串连接及合并的更多相关文章

  1. SQL server 存储过程 C#调用Windows CMD命令并返回输出结果 Mysql删除重复数据保留最小的id C# 取字符串中间文本 取字符串左边 取字符串右边 C# JSON格式数据高级用法

    create proc insertLog@Title nvarchar(50),@Contents nvarchar(max),@UserId int,@CreateTime datetimeasi ...

  2. C# 取字符串中间文本 取字符串左边 取字符串右边

    好像是第二种效率高一点,取str字符串中123左边的所有字符:第一种Between(str,"","123"),而第二种是Between(str,null,&q ...

  3. python书籍推荐:Python Cookbook第三版中文

    所属网站分类: 资源下载 > python电子书 作者:熊猫烧香 链接:http://www.pythonheidong.com/blog/article/44/ 来源:python黑洞网 内容 ...

  4. Python文本和字符串常用操作

    ## 字符串分割 line = "This is my love!" fields = line.split(' ') print(fields) # ['This', 'is', ...

  5. 13、如何拆分含有多种分隔符的字符串 14、如何判断字符串a是否以字符串b开头或结尾 15、如何调整字符串中文本的格式 16、如何将多个小字符串拼接成一个大的字符串

    13.如何拆分含有多种分隔符的字符串 import re s = "23:41:2314\1234#sdf\23;" print(re.split(r'[#:\;]+',s))   ...

  6. 《Python CookBook2》 第一章 文本 - 过滤字符串中不属于指定集合的字符 && 检查一个字符串是文本还是二进制

    过滤字符串中不属于指定集合的字符 任务: 给定一个需要保留的字符串的集合,构建一个过滤函数,并可将其应用于任何字符串s,函数返回一个s的拷贝,该拷贝只包含指定字符集合中的元素. 解决方案: impor ...

  7. <NET CLR via c# 第4版>笔记 第14章 字符,字符串和文本处理

    14.1 字符 三种数值类型与 Char 实例的相互转换: static void Main() { Char c; Int32 n; //方法一: 通过C#转型(强制类型转换)实现数字与字符的相互转 ...

  8. 【Python】Java程序员学习Python(七)— 文本类详解(字符串、str)

    如果一个女孩子喜欢看龙猫,那么请珍惜她,呵护她 任何一门语言,字符串总是最基本也是最需要掌握的一个变量,想想入门的Hello World,输出的就是字符串. 官方文档:https://docs.pyt ...

  9. python文本 去掉字符串前后空格

    python文本 去掉字符串前后空格 场景: 去掉字符串前后空格 可以使用strip,lstrip,rstrip方法 >>> a="abc".center (30 ...

  10. python字符串与文本操作(一)

    1.一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定的 #string 对象的split()方法只适应于非常简单的字符串分割情形,它并不允许有 多个分隔符或者是分隔符周围不确定的空 ...

随机推荐

  1. inline-block元素的空白间距

    inline-block元素的空白间距 html代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&quo ...

  2. GCD Demo (先存起来自己看)

    // 原代码块一 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // 原代码块二 N ...

  3. POJ1528问题解答

    #include <iostream>#include <cstdio>#include <cmath> #include <string>#inclu ...

  4. MySQL管理之道:性能调优、高可用与监控内置脚本

    MySQL管理之道:性能调优.高可用与监控内置脚本 随书附送脚本 keepalive配置文件和脚本开源工具pssh批量管理服务器(python) 下载地址 http://files.cnblogs.c ...

  5. 设计视图不能用于 x64 和 ARM 目标平台

    设计视图不能用于 x64 和 ARM 目标平台

  6. [OpenCV](1)安装与测试

    1.安装包下载地址:http://opencv.org/downloads.html 2.解压缩到D:\Program Files (x86) 3.添加环境变量:D:\Program Files (x ...

  7. 使用xib封装一个自定义view的步骤

    使用xib封装一个自定义view的步骤 1> 新建一个继承UIView的自定义view,假设类名叫做(MJAppView) 2> 新建一个MJAppView.xib文件来描述MJAppVi ...

  8. EBS运行快速安装的程序时,提示DISPLAY变量设置不对

    EBS运行快速安装的程序时,系统提示如下: Rapid Install Wizard is validating your file system...... >> Wizard requ ...

  9. iphone 语音备忘录 同步问题

    iphone 是很人性化的,但itune是反人类的. 我想同步电话里的语音备忘录,结果有几个记录在itunes里面是不显示的,无法同步出来. 找了很多解决方法,最后找了ifunbox才搞定.

  10. Lintcode: Rotate String

    Given a string and an offset, rotate string by offset. (rotate from left to right) Example Given &qu ...