Python:在两个字符之间拆分
假设我有一大堆没有换行符的HTML。我想把每个元素都放到一个列表中 诸如此类。在每个>之间拆分您可以尝试以下方法:Python:在两个字符之间拆分,python,regex,string,python-3.x,split,Python,Regex,String,Python 3.x,Split,假设我有一大堆没有换行符的HTML。我想把每个元素都放到一个列表中 诸如此类。在每个>之间拆分您可以尝试以下方法: import re a = "<head><title>Example Title</title></head>" data = re.split("><", a) new_data = [data[0]+">"]+["<" + i+">" for i in data[1:-1]] + ["<"
import re
a = "<head><title>Example Title</title></head>"
data = re.split("><", a)
new_data = [data[0]+">"]+["<" + i+">" for i in data[1:-1]] + ["<"+data[-1]]
输出:
['<head>', '<title>Example Title</title>', '</head>']
您可以尝试以下方法:
import re
a = "<head><title>Example Title</title></head>"
data = re.split("><", a)
new_data = [data[0]+">"]+["<" + i+">" for i in data[1:-1]] + ["<"+data[-1]]
输出:
['<head>', '<title>Example Title</title>', '</head>']
这将在Python2.7.2中输出给定的列表,但它也应该在Python3中工作
这将在Python2.7.2中输出给定的列表,但它也应该在Python3中工作。或者更简单,如下所示:
input = "<head><title>Example Title</title></head>"
print(['<'+elem if elem[0]!='<' else elem for elem in [elem+'>' if elem[-1]!='>' else elem for elem in input.split('><') ]])
更简单的是:
input = "<head><title>Example Title</title></head>"
print(['<'+elem if elem[0]!='<' else elem for elem in [elem+'>' if elem[-1]!='>' else elem for elem in input.split('><') ]])
在扩展示例中使用re.findall函数的最短方法:
# extended html string
s = "<head><title>Example Title</title></head><body>hello, <b>Python</b></body>"
result = re.findall(r'(<[^>]+>[^<>]+</[^>]+>|<[^>]+>)', s)
print(result)
输出:
['<head>', '<title>Example Title</title>', '</head>', '<body>', '<b>Python</b>', '</body>']
在扩展示例中使用re.findall函数的最短方法:
# extended html string
s = "<head><title>Example Title</title></head><body>hello, <b>Python</b></body>"
result = re.findall(r'(<[^>]+>[^<>]+</[^>]+>|<[^>]+>)', s)
print(result)
输出:
['<head>', '<title>Example Title</title>', '</head>', '<body>', '<b>Python</b>', '</body>']
根据其他人的回答,我做了这个
它不像我想要的那么干净,但似乎很管用。我原本不想在拆分后重新添加字符
在这里,我通过将两个字符组合成一个字符串,去掉了一个额外的参数。不管怎样
def split_between(string, chars):
if len(chars) is not 2: raise IndexError("Argument chars must contain two characters.")
result_list = [chars[1] + line + chars[0] for line in string.split(chars)]
result_list[0] = result_list[0][1:]
result_list[-1] = result_list[-1][:-1]
return result_list
归功于@cforemanand@Ajax1234。根据其他人的回答,我做了这个
它不像我想要的那么干净,但似乎很管用。我原本不想在拆分后重新添加字符
在这里,我通过将两个字符组合成一个字符串,去掉了一个额外的参数。不管怎样
def split_between(string, chars):
if len(chars) is not 2: raise IndexError("Argument chars must contain two characters.")
result_list = [chars[1] + line + chars[0] for line in string.split(chars)]
result_list[0] = result_list[0][1:]
result_list[-1] = result_list[-1][:-1]
return result_list
归功于@cforemanand@Ajax1234。请从列表中发布所需的输出。@Carcigenicate BS4不是选项。这是一个例子,不是我正在做的。这不是问题,问题在标题里。我需要在两个字符之间分割,我不关心示例HTML。它始终显示相邻>@Ajax1234之间的分割。示例列表是我需要的输出。@spikespaz请参阅的第二个答案。请从列表中发布所需的输出。@Carcigenicate BS4不是选项。这是一个例子,不是我正在做的。这不是问题,问题在标题里。我需要在两个字符之间分割,我不关心示例HTML。它始终显示相邻>@Ajax1234之间的分割。示例列表是我需要的输出。@spikespaz请参阅的第二个答案。这不会输出任何内容。这不会输出任何内容。