Python中的OR语句和正则表达式
我使用正则表达式从Python中的HTML文档编译字符串列表。字符串可以在td标记或div标记中找到。我在正确使用正则表达式或防止以下问题发生时遇到问题。如果我使用:Python中的OR语句和正则表达式,python,html,regex,html-parsing,Python,Html,Regex,Html Parsing,我使用正则表达式从Python中的HTML文档编译字符串列表。字符串可以在td标记或div标记中找到。我在正确使用正则表达式或防止以下问题发生时遇到问题。如果我使用: FindStrings= re.compile('<td>(.*?)</td>|padding:0;">(.*?)</div>') MyStrings = re.findall(FindStrings, str(soup)) print MyStrings 我发现括号左侧的字符串用(.*
FindStrings= re.compile('<td>(.*?)</td>|padding:0;">(.*?)</div>')
MyStrings = re.findall(FindStrings, str(soup))
print MyStrings
我发现括号左侧的字符串用(.*?
找到,右侧的字符串用| padding:0找到;“>(.*)
。我想知道应该向正则表达式中添加哪些内容,以获得下面的最终列表:
['apple', 'sky', 'red', 'summer', 'pizza']
您可以按照自己的方式处理正则表达式的结果。
类似这样的事情-
#Result of regex in MyStrings
>>> MyStrings = [('apple', ''), ('sky', ''), ('red', ''), ('', 'summer'), ('', 'pizza')]
>>> [s[0] if s[1]=='' else s[1] for s in MyStrings]
['apple', 'sky', 'red', 'summer', 'pizza']
您可以按照自己的方式处理正则表达式的结果。
类似这样的事情-
#Result of regex in MyStrings
>>> MyStrings = [('apple', ''), ('sky', ''), ('red', ''), ('', 'summer'), ('', 'pizza')]
>>> [s[0] if s[1]=='' else s[1] for s in MyStrings]
['apple', 'sky', 'red', 'summer', 'pizza']
。有专门的工具用于处理HTML格式
使用包的示例:
。有专门的工具用于处理HTML格式
使用包的示例:
无论您如何解析/使用正则表达式,在获得列表后,都可以使用Python的
itertools
:
import itertools
item_list = [("apple", ""), ("sky", ""), ("red", ""), ("", "summer"), ("", "pizza")]
print(item_list)
flat_list = list(itertools.chain(*item_list))
result = filter(None, flat_list)
print(result)
输出:
[('apple', ''), ('sky', ''), ('red', ''), ('', 'summer'), ('', 'pizza')]
['apple', 'sky', 'red', 'summer', 'pizza']
无论您如何解析/使用正则表达式,在获得列表后,都可以使用Python的
itertools
:
import itertools
item_list = [("apple", ""), ("sky", ""), ("red", ""), ("", "summer"), ("", "pizza")]
print(item_list)
flat_list = list(itertools.chain(*item_list))
result = filter(None, flat_list)
print(result)
输出:
[('apple', ''), ('sky', ''), ('red', ''), ('', 'summer'), ('', 'pizza')]
['apple', 'sky', 'red', 'summer', 'pizza']
不,他想通过regexNo直接提取正确的结果,他想通过regexPfff直接提取正确的结果。这被接受了?这可以通过一个简单的
[''来实现。在项目列表中加入x代表x)
没有任何itertools
或任何东西。是的,它确实被接受了-而且itertools更快。Pfff。这被接受了?这本可以通过一个简单的[“”。在项目列表中为x加入(x)]
没有任何itertools
或任何东西来实现。是的,它确实被接受了-itertools更快。