当前位置:  开发笔记 > 编程语言 > 正文

在python中拆分标签

如何解决《在python中拆分标签》经验,为你挑选了1个好方法。

我有一个文件包含这个:


  
     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

编辑:它也适用于你的新例子:).在我明显快速的测试中,它似乎也以合理的方式处理格式错误的标签,尽管我不保证其稳健性!



1> Triptych..:

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

编辑:它也适用于你的新例子:).在我明显快速的测试中,它似乎也以合理的方式处理格式错误的标签,尽管我不保证其稳健性!

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有