我有一个文件包含这个:
Hello! - {{ today }}
{{ runner_up }}
avasd
{{ blabla }}
sdvas
{{ oooo }}
什么是提取最好的或最Python的方式{{today}}
,{{runner_up}}
等等?
我知道它可以通过分割/正则表达式完成,但我想知道是否还有其他方法.
PS:考虑加载在一个变量中的数据thedata
.
编辑:我认为HTML示例很糟糕,因为它将一些评论者指向BeautifulSoup.所以,这是一个新的输入数据:
Fix grammatical or {{spelling}} errors.
Clarify meaning without changing it.
Correct minor {{mistakes}}.
Add related resources or links.
Always respect the original {{author}}.
输出:
spelling
mistakes
author
Triptych.. 8
Mmkay,这里是一个似乎对我有用的发电机解决方案.如果您愿意,还可以提供不同的打开和关闭标签.
def get_tags(s, open_delim ='{{', close_delim ='}}' ): while True: # Search for the next two delimiters in the source text start = s.find(open_delim) end = s.find(close_delim) # We found a non-empty match if -1 < start < end: # Skip the length of the open delimiter start += len(open_delim) # Spit out the tag yield s[start:end].strip() # Truncate string to start from last match s = s[end+len(close_delim):] else: return
针对您的目标输入运行,如下所示:
# prints: today, runner_up, blabla, oooo for tag in get_tags(html): print tag
编辑:它也适用于你的新例子:).在我明显快速的测试中,它似乎也以合理的方式处理格式错误的标签,尽管我不保证其稳健性!
Mmkay,这里是一个似乎对我有用的发电机解决方案.如果您愿意,还可以提供不同的打开和关闭标签.
def get_tags(s, open_delim ='{{', close_delim ='}}' ): while True: # Search for the next two delimiters in the source text start = s.find(open_delim) end = s.find(close_delim) # We found a non-empty match if -1 < start < end: # Skip the length of the open delimiter start += len(open_delim) # Spit out the tag yield s[start:end].strip() # Truncate string to start from last match s = s[end+len(close_delim):] else: return
针对您的目标输入运行,如下所示:
# prints: today, runner_up, blabla, oooo for tag in get_tags(html): print tag
编辑:它也适用于你的新例子:).在我明显快速的测试中,它似乎也以合理的方式处理格式错误的标签,尽管我不保证其稳健性!