电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python 合并拼接字符串的方法

瀏覽:2日期:2022-07-16 10:34:26

問題

你想將幾個小的字符串合并為一個大的字符串

解決方案

如果你想要合并的字符串是在一個序列或者 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’>>>

討論

字符串合并可能看上去并不需要用一整節來討論。但是不應該小看這個問題,程序員通常在字符串格式化的時候因為選擇不當而給應用程序帶來嚴重性能損失。

最重要的需要引起注意的是,當我們使用加號(+)操作符去連接大量的字符串的時候是非常低效率的,因為加號連接會引起內存復制以及垃圾回收操作。特別的,你永遠都不應像下面這樣寫字符串連接代碼:

s = ’’for p in parts: s += p

這種寫法會比使用 join() 方法運行的要慢一些,因為每一次執行+=操作的時候會創建一個新的字符串對象。你最好是先收集所有的字符串片段然后再將它們連接起來。

一個相對比較聰明的技巧是利用生成器表達式(參考1.19小節)轉換數據為字符串的同時合并字符串,比如:

>>> data = [’ACME’, 50, 91.1]>>> ’,’.join(str(d) for d in data)’ACME,50,91.1’>>>

同樣還得注意不必要的字符串連接操作。有時候程序員在沒有必要做連接操作的時候仍然多此一舉。比如在打印的時候:

print(a + ’:’ + b + ’:’ + c) # Uglyprint(’:’.join([a, b, c])) # Still uglyprint(a, b, c, sep=’:’) # Better

當混合使用I/O操作和字符串連接操作的時候,有時候需要仔細研究你的程序。比如,考慮下面的兩端代碼片段:

# Version 1 (string concatenation)f.write(chunk1 + chunk2)# Version 2 (separate I/O operations)f.write(chunk1)f.write(chunk2)

如果兩個字符串很小,那么第一個版本性能會更好些,因為I/O系統調用天生就慢。另外一方面,如果兩個字符串很大,那么第二個版本可能會更加高效,因為它避免了創建一個很大的臨時結果并且要復制大量的內存塊數據。還是那句話,有時候是需要根據你的應用程序特點來決定應該使用哪種方案。

最后談一下,如果你準備編寫構建大量小字符串的輸出代碼,你最好考慮下使用生成器函數,利用yield語句產生輸出片段。比如:

def sample(): yield ’Is’ yield ’Chicago’ yield ’Not’ yield ’Chicago?’

這種方法一個有趣的方面是它并沒有對輸出片段到底要怎樣組織做出假設。例如,你可以簡單的使用 join() 方法將這些片段合并起來:

text = ’’.join(sample())

或者你也可以將字符串片段重定向到I/O:

for part in sample(): f.write(part)

再或者你還可以寫出一些結合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)# 結合文件操作with open(’filename’, ’w’) as f: for part in combine(sample(), 32768): f.write(part)

這里的關鍵點在于原始的生成器函數并不需要知道使用細節,它只負責生成字符串片段就行了。

以上就是Python 合并拼接字符串的方法的詳細內容,更多關于Python 合并拼接字符串的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 杰恒蠕动泵-蠕动泵专业厂家-19年专注蠕动泵 | 飞扬动力官网-广告公司管理软件,广告公司管理系统,喷绘写真条幅制作管理软件,广告公司ERP系统 | 石磨面粉机|石磨面粉机械|石磨面粉机组|石磨面粉成套设备-河南成立粮油机械有限公司 | 合肥地磅_合肥数控切割机_安徽地磅厂家_合肥世佳电工设备有限公司 | 云杂志网-学术期刊-首页| 双齿辊破碎机-大型狼牙破碎机视频-对辊破碎机价格/型号图片-金联机械设备生产厂家 | 厌氧工作站-通用型厌氧工作站-上海胜秋科学仪器有限公司 | 沈阳缠绕膜价格_沈阳拉伸膜厂家_沈阳缠绕膜厂家直销 | 拖鞋定制厂家-品牌拖鞋代加工厂-振扬实业中国高端拖鞋大型制造商 | 合肥礼品公司-合肥礼品定制-商务礼品定制公司-安徽柏榽商贸有限公司 | 考勤系统_考勤管理系统_网络考勤软件_政企|集团|工厂复杂考勤工时统计排班管理系统_天时考勤 | 论文查重_免费论文查重_知网学术不端论文查重检测系统入口_论文查重软件 | 国际线缆连接网 - 连接器_线缆线束加工行业门户网站 | 冷却塔改造厂家_不锈钢冷却塔_玻璃钢冷却塔改造维修-广东特菱节能空调设备有限公司 | 清洁设备_洗地机/扫地机厂家_全自动洗地机_橙犀清洁设备官网 | Type-c防水母座|贴片母座|耳机接口|Type-c插座-深圳市步步精科技有限公司 | 「银杏树」银杏树行情价格_银杏树种植_山东程锦园林 | 篮球地板厂家_舞台木地板品牌_体育运动地板厂家_凯洁地板 | 浙江华锤电器有限公司_地磅称重设备_防作弊地磅_浙江地磅售后维修_无人值守扫码过磅系统_浙江源头地磅厂家_浙江工厂直营地磅 | 粘度计NDJ-5S,粘度计NDJ-8S,越平水分测定仪-上海右一仪器有限公司 | 兰州UPS电源,兰州山特UPS-兰州万胜商贸 | 南京泽朗生物科技有限公司 | 【MBA备考网】-2024年工商管理硕士MBA院校/报考条件/培训/考试科目/提前面试/考试/学费-MBA备考网 | 游泳池设计|设备|配件|药品|吸污机-东莞市太平洋康体设施有限公司 | 飞行者联盟-飞机模拟机_无人机_低空经济_航空技术交流平台 | 哲力实业_专注汽车涂料汽车漆研发生产_汽车漆|修补油漆品牌厂家 长沙一级消防工程公司_智能化弱电_机电安装_亮化工程专业施工承包_湖南公共安全工程有限公司 | 石膏基自流平砂浆厂家-高强石膏基保温隔声自流平-轻质抹灰石膏粉砂浆批发-永康市汇利建设有限公司 | 电磁流量计_智能防腐防爆管道式计量表-金湖凯铭仪表有限公司 | 瓶盖扭矩仪(扭力值检测)-百科| 医学动画公司-制作3d医学动画视频-医疗医学演示动画制作-医学三维动画制作公司 | 抖音短视频运营_企业网站建设_网络推广_全网自媒体营销-东莞市凌天信息科技有限公司 | 挨踢网-大家的导航! | 电缆接头-防爆电缆接头-格兰头-金属电缆接头-防爆填料函 | CXB船用变压器-JCZ系列制动器-HH101船用铜质开关-上海永上船舶电器厂 | 包塑丝_高铁绑丝_地暖绑丝_涂塑丝_塑料皮铁丝_河北创筹金属丝网制品有限公司 | 纸箱抗压机,拉力机,脂肪测定仪,定氮仪-山东德瑞克仪器有限公司 | 金蝶帐无忧|云代账软件|智能财税软件|会计代账公司专用软件 | 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 - 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 | 土壤墒情监测站_土壤墒情监测仪_土壤墒情监测系统_管式土壤墒情站-山东风途物联网 | 水性绝缘漆_凡立水_绝缘漆树脂_环保绝缘漆-深圳维特利环保材料有限公司 | 滑板场地施工_极限运动场地设计_滑板公园建造_盐城天人极限运动场地建设有限公司 |