• 【python cookbook】【字符串与文本】14.字符串连接及合并


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

    解决方案:

    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('
    ')
    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('
    ')
    >>> ================================ RESTART ================================
    >>> 
    IsChicagoNotChicago?
    ======================
    IsChicagoNotChicago?
    **************************
    IsChicagoNotChicago?
    >>> 
  • 相关阅读:
    Java在控制台运行IDE工具编写的程序
    mysql数据库执行存储过程问题
    Java之正则表达式在字符串中查找中文
    java之endwith()方法以及正则表达式匹配中文
    工具资源 Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore
    5、概率图模型 Inference-Variable_Elimination
    4、概率图模型:Template Modles
    3、概率图模型:Local Structure in Markov Network
    2、概率图模型: Markov Random Fields
    1、概率图模型: Bayesian Networks
  • 原文地址:https://www.cnblogs.com/apple2016/p/5793427.html
Copyright © 2020-2023  润新知