4-4 如何将多个小字符串拼接成一个大字符串?
2019-02-10 本文已影响0人
Diolog
实际案例:
- 在设计某网络程序时,我们自定义了一个基于UDP的网络协议,按照固定次序向服务器传递一系列参数:
hwDetect: "<0112>"
gxDepthBits: "<32>"
gxResolutions: "<1024x768>"
gxRefresh: "<60>"
fullAlpha: "<1>"
lodDict: "<100.0>"
DistCull: "<500.0>"
在程序中我们将各个参数按次序收集到列表中:
["<0112>","<32>","<1024x768>","<60>","<1>","<100.0>","<500.0>"]
最终我们要把各个参数拼接成一个数据报进行发送.
"<0112><32><1024x768><60><1><100.0><500.0>"
解决方案:
- 迭代列表,连续使用'+'操作依次拼接每一个字符串
- 使用str.join()方法,更加快速的拼接列表中所有字符串
解决方案1:
from functools import reduce
l = ["<0112>","<32>","<1024x768>","<60>","<1>","<100.0>","<500.0>"]
s = reduce(lambda x,y:x+y,l)
print(s)
输出结果:
'<0112><32><1024x768><60><1><100.0><500.0>'
join测试
';'.join(['abc','123','xyz']) => 'abc;123;xyz'
''.join(['abc','123','xyz']) => 'abc123xyz'
''.join(['abc',123,'xyz'])
=>Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sequence item 1: expected str instance, int found
解决方案2:
s = ''.join(l)
print(s)
输出结果:
'<0112><32><1024x768><60><1><100.0><500.0>'