如何在不拆分链接的情况下使用Dot进行拆分



我想在点上拆分(.(,但我不想拆分链接。

假设字符串是-

<p>This is a paragraph. I want to split it. <a href="somesite.com">Link</a>

预期输出-

'<p>This is a paragraph' ,'I want to split it' ,'<a href="somesite.com">Link</a>'

电流输出-

'<p>This is a paragraph' ,'I want to split it' ,'<a href="somesite', 'com">Link</a>'

请注意,我不希望链接被拆分。此外,我知道你可以使用.split(".")来拆分它,但我怎么能不拆分那个链接呢?

使用html解析器(例如this(。找出一个段落的开头,然后像这样分割数据:

from html.parser import HTMLParser
class MyHTMLParser(HTMLParser):
def __init__(self):
self.in_paragraph = False
super(MyHTMLParser, self).__init__()
def handle_starttag(self, tag, attrs):
print("Encountered a start tag:", tag)
if tag == 'p':
self.in_paragraph = True
else:
self.in_paragraph = False
def handle_endtag(self, tag):
print("Encountered an end tag :", tag)
def handle_data(self, data):
if self.in_paragraph:
data = data.split('.')
print("Encountered some data  :", data)
parser = MyHTMLParser()
parser.feed('<p>This is a paragraph. I want to split it. <a href="somesite.com">Link</a>')
Encountered a start tag: p
Encountered some data  : ['This is a paragraph', ' I want to split it', ' ']
Encountered a start tag: a
Encountered some data  : Link
Encountered an end tag : a

解决方案1:字符串对象有一个名为"split"的方法:

s = 'google.com'
splitted = s.split('.')
print(splitted)
>>> ['google', 'com']

它接受一个字符串,并由一个子字符串(如"."(分割。

解决方案2:查找"的位置在字符串中,然后手动拆分:

s = 'google.com'
idx = s.indexOf('.')
first = s[:idx]
sec = s[idx:]
print(first)
>>> google
print(sec)
>>> .com

我不认为您想要做的事情可以用正则表达式来完成。

最简单的方法是简单地除以"&";,然后在结果列表上迭代,并在每个字符串中搜索"<a ",如果找到一个,则重新加入后续的结果列表元素,直到找到"</a>"

最新更新