【问题标题】:how to use the regex findall list如何使用正则表达式 findall 列表
【发布时间】:2015-01-15 14:45:50
【问题描述】:

所以我是一名 js 实习生,在我的实习期间,有人要求我在 python 代码上做一些事情,但我从来没有在 Python 上做过任何事情,所以我有点迷茫.. 我想在不同的块中分隔一个字符串。

这是我所拥有的:

    buffer = """
#<start>
    idothings
#</start>
#<params>
    otherthings
#</params>
#<end>
    andifinish
#</end>

我想要的是一个将这个字符串分成不同部分的正则表达式:

separatedString = [["#<start>,"idothings","#</start>"],["#<params>,"otherthings","#</params>"],["#<end>,"andifinish","#</end>"]]

我试图做的是:

def getStructure(string):

    separatedString = re.findall('(#<.+?>)(.|\n)+?(#<\/.+?>)', string)
    return

但这给了我一个列表...我不明白如何在 python 中浏览一个列表...

[("#<start>", '\n', '#</start>'), ('#<azeaze>', '\n', '#</azeaze>'), ('#<sgdfs>', 'x', '#</sgdfs>')]

我试过了:

print '\n'.join(["%s a %s et %s" %(p1,p2,p3) for p1, strings in separatedString ])

但它给我一个错误“解包的值太多”

谁能告诉我如何做到这一点?

【问题讨论】:

    标签: python regex list


    【解决方案1】:
    buffer = """#<start>
        idothings
    #</start>
    #<params>
        otherthings
    #</params>
    #<end>
        andifinish
    #</end>"""
    
    spl = buffer.splitlines()
    print([spl[i:i+3] for i in range(0,len(spl),3)])
    [['#<start>', '    idothings', '#</start>'], ['#<params>', '    otherthings', '#</params>'], ['#<end>', '    andifinish', '#</end>']]
    
    
    
    
    spl = buffer.splitlines()
    sliced = [spl[i:i+3] for i in range(0,len(spl),3)]
    
    for a,b,c in sliced:
        print(a.strip(),b.strip(),c.striip())
    ('#<start>', 'idothings', '#</start>')
    ('#<params>', 'otherthings', '#</params>')
    ('#<end>', 'andifinish', '#</end>')
    

    【讨论】:

    • sliced 基本上将缓冲区中的每三行分组到列表中,对于切片中的 a、b、c,只需解压缩每个子列表 :)
    • 字符串被分割成一行以使其在帖子中更加“可见”,但不会一直这样,如果字符串只有一个,您的方法将不起作用线,不是吗?但是无论如何,您的代码的某些通道帮助我理解了:D
    • 不,但是拆包是一样的。你想要什么实际输出?
    • 拆包是最重要的事情 ;) 我会做剩下的 ;) thx!祝你有美好的一天;)
    【解决方案2】:

    您的打印语句有点错误 .试试这个

    print '\n'.join(["%s a %s et %s" %(p1,p2,p3) for p1, p2, p3 in separatedString ])
    

    你得到一个错误,因为你试图从一个包含三个元素的元组中获取两个值

    for p1, strings in separatedString 
    

    这里separatedString的每个成员都有3个元素

    【讨论】:

      猜你喜欢
      • 2015-08-13
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多