web-dev-qa-db-ja.com

Python split()区切り文字を削除せずに

このコードは、私が必要としていることをほとんど行います。

for line in all_lines:
    s = line.split('>')

ただし、すべての「>」区切り文字が削除される場合を除きます。

そう、

<html><head>

に変わる

['<html','<head']

Split()メソッドを使用する方法はありますが、keepデリミタを削除する代わりに使用しますか?

これらの結果で..

['<html>','<head>']
76
some1
d = ">"
for line in all_lines:
    s =  [e+d for e in line.split(d) if e]
41
P.Melch

HTMLを分割して解析している場合は、固定された安全なコンテンツファイルを対象としたワンショットスクリプトを記述している場合を除き、間違っている可能性があります。 HTML入力で動作することになっている場合、<a title='growth > 8%' href='#something'>

とにかく、次は私のために働く:

>>> import re
>>> re.split('(<[^>]*>)', '<body><table><tr><td>')[1::2]
['<body>', '<table>', '<tr>', '<td>']
31
gb.

これはどう:

import re
s = '<html><head>'
re.findall('[^>]+>', s)
16
Óscar López

分割するだけで、配列/リスト内の各要素(最後の要素を除く)に末尾の「>」を追加します。

0
orangething