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

解决方案:

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

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

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

>>> parts=['Is','Chicago','Not','Chicago?']
>>> ','.join(parts)
'Is,Chicago,Not,Chicago?'
>>> a='Is Chicago'
>>> b='Not Chicago?'
>>> '{} {}'.format(a,b)
'Is Chicago Not Chicago?'
>>> '{}{}'.format(a,b)
'Is ChicagoNot Chicago?'
>>> '{}*{}'.format(a,b)
'Is Chicago*Not Chicago?'
>>> '{}*&%${}'.format(a,b)
'Is Chicago*&%$Not Chicago?'
>>> a+' '+b
'Is Chicago Not Chicago?'
>>> 'Hello' 'World'
'HelloWorld'
>>> print (a,b,sep=':') #更好的使用方法
Is Chicago:Not Chicago?

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

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

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

# example.py
#
# Example of combining text via generators def sample():
yield "Is"
yield "Chicago"
yield "Not"
yield "Chicago?" # (a) 使用join()将他们简单的连接起来
text = ''.join(sample())
print(text)
print('======================')
# (b) 将这些片段重定向到I/O
import sys
for part in sample():
sys.stdout.write(part)
sys.stdout.write('\n')
print('**************************')
# (c) 以混合的方式将I/O操作智能化地结合在一起
def combine(source, maxsize):
parts = []
size = 0
for part in source:
parts.append(part)
size += len(part)
if size > maxsize:
yield ''.join(parts)
parts = []
size = 0
yield ''.join(parts) for part in combine(sample(), 32768):
sys.stdout.write(part)
sys.stdout.write('\n')
>>> ================================ RESTART ================================
>>>
IsChicagoNotChicago?
======================
IsChicagoNotChicago?
**************************
IsChicagoNotChicago?
>>>

【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. Mybatis的分页插件PageHelper

    Mybatis的分页插件PageHelper 项目地址:http://git.oschina.net/free/Mybatis_PageHelper  文档地址:http://git.oschina. ...

  2. 添加 Gradle 依赖与 build.gradle 配置初识

    添加 Gradle 我们可以到我们添加 Maven 依赖的网站 Maven Repository: Search/Browse/Explore http://mvnrepository.com/ 上查 ...

  3. h5固定表头公共样式

    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scal ...

  4. Android shape的使用(圆角矩形)

    <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http: ...

  5. bootstrap学习之三—插件

    一.模态框(modal)插件 1)为要触发模态框的组件添加data-toggle="modal",data-target="对应ID" 2)使用一个div实现m ...

  6. 新的三种EBS类型解析

    就在前两天,创建EBS的之后页面发生了点变化,出现三种新的类型: General Purpose (SSD) Volumes Provisioned IOPS (SSD) Volumes Magnet ...

  7. javascript异步加载的三种解决方案

    默认情况javascript是同步加载的,也就是javascript的加载时阻塞的,后面的元素要等待javascript加载完毕后才能进行再加载,对于一些意义不是很大的javascript,如果放在页 ...

  8. Eclipse+SVN搭建开发环境

    目前我们开发环境为:windows service 2008 r2 x64 现在开始记录一下eclipse+SVN环境搭建过程: 1,)下载 VisualSVN-Server-3.4.2-x64:ht ...

  9. 基于DES算法加密的防撞库密码系统项目总结

    项目内容:基于DES算法加密的防撞库密码系统 小组名:zqhzkzkj 目标:1.对用户输入的8位字符进行DES加密,要求用户输入8位密钥 2.对于不同的网站,不同的用户名生成不同的密码 小组成员:周 ...

  10. eclipse Project facet Java version 1.8 is not supported.

    在移植eclipse项目时,如果遇到 “Project facet Java version 1.7 is not supported.” 项目中的jdk1.7不支持.说明项目是其他版本jdk编译的, ...