删除带有条带的字符串内的标签?

时间:2016-12-09 00:21:33

标签: python split strip

无论如何使用strip删除字符串中的字符?例如

如果我采取:

s = <city>Omaha</city>
s.strip("< ").strip(" > \n").strip("/")

那会变成:

city>Omaha</city

无论如何要移除城市&gt;和&lt; / city使用strip还是split?

3 个答案:

答案 0 :(得分:0)

如果括号始终为<city></city>

>>> s = "<city>Omaha</city>"
>>> s.strip("<city>").strip("</city>")
'Omaha'

答案 1 :(得分:0)

此代码通过拆分删除所有正确嵌套的标记:

s = "In the <noun>city</noun> of <city>Omaha</city>..."
parts = [x.split(">") for x in s.split("<")]
print(parts)
# [['In the '], ['noun', 'city'], ['/noun', ' of '], ['city', 'Omaha'], ['/city', '...']]
s = ''.join(parts[0] + [part[1] for part in parts[1:]])
print(s)
# In the city of Omaha...

答案 2 :(得分:0)

专门针对您的示例 - 如果输入中没有2个标记的单词:

s = "<city>Omaha</city>"
s.split('>')[1].split('<')[0]

输出:

'Omaha'

即使有完整的句子,这也会起作用 - 前提是句子中只有一个标签。

如果可以有多个:

example = "An example is only <word>valid</word> when its not <opposite>invalid</opposite>."
split_example = example.split('>')
for i in range(len(split_example)):
    if "</" in split_example[i]:
        split_example[i].split('<')[0]

输出:

'valid'
'invalid'