需要帮助为我的字符串模式找到正确的正则表达式模式

时间:2016-06-15 02:03:53

标签: python regex string parsing split

我对RegEx模式很糟糕,我正在编写一个简单的python程序,需要将文件行拆分为“内容”部分和“标记”部分,然后进一步将标记部分拆分为单个标记。这是一个简单的例子,说明我的文件的一行是什么样的:

The Beatles <music,rock,60s,70s>

我打开了我的文件,开始阅读这样的行:

def Load(self, filename):
    file = open(filename, r)

    for line in file:
        #Ignore comments and empty lines..
        if not line.startswith('#') and not line.strip():
        #...

原谅我可能很糟糕的Python,这是我用语言开始的前几天。无论如何,接下来我认为使用正则表达式将我的字符串分成几部分是有用的 - 使用变量来存储'内容'(例如,“披头士”),以及用于存储每个字符串的列表/集合标签。因此,我需要一个正则表达式(或两个?),可以:

  • 从&lt;&gt;拆分原始部分一部分。

  • 将标签部分拆分为基于逗号的列表。

  • 最后,我想确保内容部分保留其大写和内部空间。但我想确保标签都是小写的,没有空格。

我想知道那里的任何正则表达式专家是否可以帮助我找到正确的模式来实现我的目标?

1 个答案:

答案 0 :(得分:1)

这是一种解决问题的解决方案,无需使用依赖多个拆分。

# This separates the string into the content and the remainder
content, tagStr = line.split('<')

# This splits the tagStr into individual tags. [:-1] is used to remove trailing '>'
tags = tagStr[:-1].split(',')

print content
print tags

这个问题是它在内容之后留下了一个尾随空格。 您可以使用以下命令删除它:

content = content[:-1]