arrays - 在字符串列表上并行执行 if else 条件
问题描述
我是 python 新手,在获得正确的输出方面遇到了问题。我有一个字符串列表:
list_string=[
'!DOC <p>The course starts next Sunday</t><div>',
"!DOC <p>class='default'<d>I don't wash the dishes</span></t>",
'When does the train usually leave'
]
我想要的输出为:
Output expected: [['The course starts next Sunday'], ["I don't wash the dishes"], 'When does the train usually leave']
我所做的是:
import re
subtring='!DOC'
output=[]
for i in string:
if subtring in i:
text=re.findall("<p>(.*?)</t>",i, re.DOTALL)
output.append(text)
elif subtring in i:
text=re.findall("<d>(.*?)</span>",i, re.DOTALL)
output.append(text)
else:
output.append(i)
print (output)
[['The course starts next Sunday'], ["class='default'<d>I don't wash the dishes</span>"], 'When does the train usually leave']
任何人都可以提出正确的方法吗?
解决方案
似乎第二条规则胜过第一条规则,因此如果第二条规则匹配,请使用它,否则尝试第一条规则退回给您的内容。
与您现在拥有的解决方案接近的解决方案可能是:
import re
list_string =[
'!DOC <p>The course starts next Sunday</t><div>',
"!DOC <p>class='default'<d>I don't wash the dishes</span></t>",
'When does the train usually leave'
]
output=[]
for line in list_string:
retval = re.findall("<d>(.*?)</span>", line, re.DOTALL)
if retval:
output.append(retval[0])
continue
retval = re.findall("<p>(.*?)</t>", line, re.DOTALL)
if retval:
output.append(retval[0])
continue
output.append(line)
print (output)
虽然如果是我,我可能会使用一个带有理解的小函数:
import re
def pick_out_text(text):
retval = re.findall("<d>(.*?)</span>", text, re.DOTALL)
if retval: return retval[0]
retval = re.findall("<p>(.*?)</t>", text, re.DOTALL)
if retval: return retval[0]
return text
list_string =[
'!DOC <p>The course starts next Sunday</t><div>',
"!DOC <p>class='default'<d>I don't wash the dishes</span></t>",
'When does the train usually leave'
]
output = [pick_out_text(line) for line in list_string]
print(output)
推荐阅读
- r - 使用 readtext 和 quanteda 制作语料库的正确方法是什么?
- android - 2 个视频 1 个媒体控制器
- java - 使用 Map 的 getOrDefault 函数找不到符号
- r - 为条形图定义固定宽度/高度,然后为条形图设置绝对宽度,以及条形图之间的绝对间距,以像素为单位
- amazon-web-services - 为什么 get-product 在某些地区不返回任何产品?
- c - 将值从一个函数传递到另一个函数以使用它进行计算
- function - 将函数添加到预先存在的结构
- python - 在 Easyocr 中出现“urllib.error.HTTPError: HTTP Error 403: Forbidden”错误
- android - MediaPlayerNative(13949): 错误 (1, -19) - 音频播放器库 - Flutter
- java - twilio看不到其他人的视频