Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的OR语句和正则表达式_Python_Html_Regex_Html Parsing - Fatal编程技术网

Python中的OR语句和正则表达式

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 我发现括号左侧的字符串用(.*

我使用正则表达式从Python中的HTML文档编译字符串列表。字符串可以在td标记或div标记中找到。我在正确使用正则表达式或防止以下问题发生时遇到问题。如果我使用:

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更快。