为了账号安全,请及时绑定邮箱和手机立即绑定

将字符串文件转换为所需格式:将 / 替换为 _ 除了逗号前的那些

将字符串文件转换为所需格式:将 / 替换为 _ 除了逗号前的那些

慕莱坞森 2021-11-23 19:23:29
我需要以特定格式转换文件。这是示例:>>> 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"我需要替换所有/与_除这是以前生产的,和之后的空间,。需要的输出:>>> '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'我尝试替换为/,_但在这种情况下,我无法排除/before ,。>>> x.replace("/", "_").replace(",", ", ") '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'有没有其他方法可以实现这一目标?提前致谢。
查看完整描述

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


查看完整回答
反对 回复 2021-11-23
  • 1 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号