Python 将字符串文件转换为所需格式:将/替换为u,逗号之前的除外

Python 将字符串文件转换为所需格式:将/替换为u,逗号之前的除外,python,python-2.7,Python,Python 2.7,我需要以特定格式转换文件 以下是一个例子: >>> 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" 我需要将所有的/替换为.,除了之前、和、之后的空格 >>> x.replace("/", "_").replace(",", ", ") 'abc_xyz_abc_xyz_ab_c : abc_xyz_abc_xyz_ab_c, ab_c_xy_

我需要以特定格式转换文件

以下是一个例子:

>>> 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"
我需要将所有的
/
替换为
.
,除了
之前、
之后的空格

>>> 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'
所需产出:

>>> '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'
我尝试将
/
替换为
.
,但在这种情况下,我无法排除
/
之前的

>>> 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,并使用正确的中间值将其重新组合在一起:

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中也同样有效;他们会处理得很好的;如果字符串是
“foo/bar/baz,qux/quz”
,该怎么办?输出应该是
“foo_-bar/baz,qux/quz”
还是
“foo_-bar/baz,qux_-quz”
?如果字符串是
foo/bar/baz,qux/quz
,输出应该是
foo-bar/baz,qux/quz