在python中使用插入符号分割字符串

时间:2011-06-18 03:13:58

标签: python regex text split

我有一个巨大的文本文件,每行看起来像这样:

  

某种通用菜单^ a_sub_menu_title ^^ pagNumber

请注意,第一个“常规菜单”有空格,第二个部分(一个副标题)每个单词用“_”字符分开,最后是一个数字(一个pag数字)。我想在3个(明显的)部分中拆分每一行,因为我想在python中创建某种目录。

我正在尝试使用re模块,但由于插入符号在这样的模块中具有强烈的意义,我无法弄清楚如何做到这一点。

有人可以帮帮我????

5 个答案:

答案 0 :(得分:4)

>>> "Some sort of general menu^a_sub_menu_title^^pagNumber".split("^")
['Some sort of general menu', 'a_sub_menu_title', '', 'pagNumber']

答案 1 :(得分:2)

如果你只想要三件,你可以通过生成器表达来实现这个目的:

line = 'Some sort of general menu^a_sub_menu_title^^pagNumber'
pieces = [x for x in line.split('^') if x]
# pieces => ['Some sort of general menu', 'a_sub_menu_title', 'pagNumber']

答案 2 :(得分:0)

您需要做的是“逃避”特殊字符,例如r'\^'。但在这种情况下,比正则表达式更好的是:

line = "Some sort of general menu^a_sub_menu_title^^pagNumber"
(menu, title, dummy, page) = line.split('^')

以更简单的方式为您提供组件。

答案 3 :(得分:0)

你可以说string.split("^")将字符串分成包含每个段的数组。唯一需要注意的是,它会将连续的插入符号分成空字符串。您可以通过将连续的克拉折叠成单个克拉,或者在结果数组中检测空字符串来防止这种情况。

有关详细信息,请参阅http://docs.python.org/library/stdtypes.html

这有帮助吗?

答案 4 :(得分:0)

您的文件也可能使用与csv模块兼容的格式,您也可以查看,特别是如果格式允许引用,因为line.split会中断。如果格式不使用引号而且它只是分隔符和文本,line.split可能是最好的。

此外,对于re模块,可以使用\转义任何特殊字符,例如r'\^'。我建议在跳转到使用re之前1)学习如何编写正则表达式,2)首先寻找问题的解决方案,而不是跳到正则表达式 - «有些人在面对问题时,想“我知道,我会使用正则表达式。”现在他们有两个问题。 »