使用splitlines()拆分html字符串仍然会离开sp

2024-04-26 23:18:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将下面的html字符串(示例被缩短)拆分为一个选项列表。 (html字符串是使用select上的innerHTML通过ajax从前端发送的)

但是,当我使用str.splitlines()时,仍然会留下空字符串和空格。你知道吗

输入:

<option value="" selected="">---------</option>

  <option value="1">Option 1</option>

  <option value="2">Option 2</option>

输出:

<class 'list'>: ['', '  <option value="" selected="">---------</option>', '', '  <option value="1">Option 1</option>', '', '  <option value="2">Options 2</option>', '', '   ']

有没有更好的方法将字符串拆分为选项列表?你知道吗

(请注意,如果这是更简单的方法,我也可以选择更改前端)


Tags: 方法字符串示例列表valuehtml选项ajax
1条回答
网友
1楼 · 发布于 2024-04-26 23:18:47

是的,str.splitlines()不会删除空行。method documentation包含一个示例,说明发生了什么:

>>> 'ab c\n\nde fg\rkl\r\n'.splitlines()
['ab c', '', 'de fg', 'kl']

^ {< CD2>}双换行分隔3行,中间一空。你知道吗

如果必须对行进行拆分并删除空行、前导空格和尾随空格,请使用正则表达式:

import re

lines = re.split('[ ]*\n+[ ]*', inputtext.strip())

额外的str.strip()调用会完全删除开头和结尾的空白,否则会在开头和结尾得到空字符串。你知道吗

演示:

>>> import re
>>> inputtext = '''\
...
... <option value="" selected="">    -</option>
...
...   <option value="1">Option 1</option>
...
...   <option value="2">Option 2</option>
...
...     '''
>>> inputtext.splitlines()
['', '<option value="" selected="">    -</option>', '', '  <option value="1">Option 1</option>', '', '  <option value="2">Option 2</option>', '', '    ']
>>> re.split('[ ]*\n+[ ]*', inputtext.strip())
['<option value="" selected="">    -</option>', '<option value="1">Option 1</option>', '<option value="2">Option 2</option>']

但是,对于解析HTML,您可能需要查看类似BeautifulSoup的库。你知道吗

相关问题 更多 >