1 回答
TA贡献1824条经验 获得超5个赞
zip()将拆分的 (at '/') 文本本身移动 1 并使用正确的中间件将其放回原处:
x = "abc/xyz/abc/xyz/ab_c : abc/xyz/abc/xyz/ab_c,ab_c/xy_z/ab_c/xy_z/ab_c/xy_z,1"
parts = x.split("/")
pp = zip(parts,parts[1:])
l = []
for at,after in pp:
if ',' in after:
l.extend([at,'/'])
else:
l.extend([at,'_'])
l.append(after)
# join and add spaces after ,
new_t = ''.join(l).replace(",",", ")
print(new_t)
print('abc_xyz_abc_xyz_ab_c : abc_xyz_abc_xyz/ab_c, ab_c_xy_z_ab_c_xy_z_ab_c/xy_z, 1')
输出:
abc_xyz_abc_xyz_ab_c : abc_xyz_abc_xyz/ab_c, ab_c_xy_z_ab_c_xy_z_ab_c/xy_z, 1
abc_xyz_abc_xyz_ab_c : abc_xyz_abc_xyz/ab_c, ab_c_xy_z_ab_c_xy_z_ab_c/xy_z, 1
压缩后的东西看起来像这样:
# pp splitted zipped with itself, shifted by 1
[('abc', 'xyz'), ('xyz', 'abc'), ('abc', 'xyz'), ('xyz', 'ab_c : abc'),
('ab_c : abc', 'xyz'), ('xyz', 'abc'), ('abc', 'xyz'), ('xyz', 'ab_c,ab_c'),
('ab_c,ab_c', 'xy_z'), ('xy_z', 'ab_c'), ('ab_c', 'xy_z'), ('xy_z', 'ab_c'),
('ab_c', 'xy_z,1')]
此代码使用 python 3 样式打印 - 但它也适用于 python 2
添加回答
举报
