如何摆脱python字符串对象中的特殊字符

时间:2015-09-02 06:03:21

标签: python fabric

这是我的代码

def get_current_branch():
"returns current working branch."
init()
try:
    with cd(env.repo_path):
        with hide('output','running','warnings'):
            cmd = 'git branch'
            out = run(cmd, shell=True).split('\n')
            print out
            for branch in out:
                if '*' in branch:
                    temp = branch.split(' ')[1]
                    out = temp

        return out

except Exception as msg:
    print(red("\nError!!!\n\n" + str(msg)))

上述代码的输出结果如下:

['RALP\x1b[m\r', '  SALP\x1b[m\r', '* \x1b[32mintegration\x1b[m']

实际的分支名称是RALP,SALP和集成。但是所有这些特殊字符都在破坏文本处理。我该如何摆脱这些角色?

1 个答案:

答案 0 :(得分:1)

使用正则表达式删除它们

import re

out = re.sub('\x1b[^m]*m', '', out)
out = re.sub('\r$', '', out)
out = re.sub('\*', '', out)
out = out.strip()

仅供参考,这些序列是ANSI转义码,用于为终端中的文本添加颜色。如果您运行git branch --no-color,则会自动删除部分内容。

另外,将temp = branch.split(' ')[1]更改为temp = branch.split('*')[1]。这应该会自动删除当前分支中的*。