python - 将字符串文件转换为所需格式:将 / 替换为 _,逗号前除外
问题描述
我需要以特定格式隐藏文件。
这是示例:
>>> 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'
我尝试替换/
为,_
但在这种情况下,我无法排除/
之前,
的 .
>>> 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'
有没有其他方法可以实现这一目标?提前致谢。
解决方案
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 中也能正常工作
推荐阅读
- c - 如何创建迭代结构?
- javascript - Luhn算法实现成原始代码
- python - 以奇怪的格式抓取html表格和
- php - 如何在php中访问不同级别的多维数组
- sql - 加入oracle xe 11g时无法显示具有相同ID的所有记录
- .htaccess - 由于 htaccess 导致的 500 内部服务器错误
- safari - Safari 浏览器 z-index 或变换 CSS 属性问题 - 元素不可见/背景
- javascript - 如何将 Vuforia Web 服务 API 与 JavaScript 一起使用?
- javascript - 返回地图内的对象时获取“TypeError:无法读取未定义的属性'切片'”
- html - 如何在引导程序中将 div 中的内容与它之外的内容对齐?