所以我是一名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 ])
但它给我带来了一个错误&#34;太多的值无法打开&#34;
有人能告诉我如何做到这一点吗?
答案 0 :(得分:1)
您的打印声明有点不对劲 。试试这个
print '\n'.join(["%s a %s et %s" %(p1,p2,p3) for p1, p2, p3 in separatedString ])
您收到错误,因为您试图从具有三个元素的元组中获取两个值
for p1, strings in separatedString
此处separatedString
在每个成员中都有3个元素
答案 1 :(得分: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>')