【问题标题】:translating gsub command from R into Python将 gsub 命令从 R 翻译成 Python
【发布时间】:2018-04-09 03:27:26
【问题描述】:

我想拆分这个 mystring="0G15^GAC0T60T4^AA0C0" 并用 python 得到以下输出:

['0','G','15','^GAC','T','60','T','4','^AA','C']

可以在 R 中使用这个命令来完成:

mystring <- "0G15^GAC0T60T4^AA0C0"
gsub("([\\^]*[ACGT]+)[0]*", " \\1 ", mystring)

如何将 R 脚本翻译成 python?

谢谢

【问题讨论】:

    标签: python r regex


    【解决方案1】:

    您可以使用 Python 的 re 模块重用现有的正则表达式

    import re
    
    mystring = "0G15^GAC0T60T4^AA0C0"
    l = re.sub("([\\^]*[ACGT]+)[0]*", " \\1 ", mystring).split()
    

    l 然后是

    ['0', 'G', '15', '^GAC', 'T', '60', 'T', '4', '^AA', 'C']
    

    【讨论】:

    • 不错的正则表达式老兄!...很好的答案!这是一个加号
    【解决方案2】:

    你可以试试这个:

    mystring="0G15^GAC0T60T4^AA0C0" 
    import re
    new_data = re.findall('(?<!\^[GAC])\d+|(?<!\^)\w|\^[a-zA-Z]+', mystring)
    final_data = [a for i, a in enumerate(new_data) if a != '0' or not new_data[i-1].startswith("^")][:-1]
    

    输出:

    ['0', 'G', '15', '^GAC', 'T', '60', 'T', '4', '^AA', 'C']
    

    【讨论】:

    • 输出不一样