脱字符我有一个巨大的文本文件,每行似乎是这样的:分割字符串可以用Python
某种通用的菜单^ a_sub_menu_title ^^ pagNumber
注意,第一个“一般菜单“有白色空格,第二部分(小标题)每个单词用”_“字符分隔,最后是一个数字(一个页码)。我想分割3个(明显的)部分中的每一行,因为我想在python中创建某种目录。
我正在尝试重新模块,但由于插入符号在这个模块中有很强的意义,所以我无法弄清楚它是如何做到的。
有人能帮我吗?
脱字符我有一个巨大的文本文件,每行似乎是这样的:分割字符串可以用Python
某种通用的菜单^ a_sub_menu_title ^^ pagNumber
注意,第一个“一般菜单“有白色空格,第二部分(小标题)每个单词用”_“字符分隔,最后是一个数字(一个页码)。我想分割3个(明显的)部分中的每一行,因为我想在python中创建某种目录。
我正在尝试重新模块,但由于插入符号在这个模块中有很强的意义,所以我无法弄清楚它是如何做到的。
有人能帮我吗?
>>> "Some sort of general menu^a_sub_menu_title^^pagNumber".split("^")
['Some sort of general menu', 'a_sub_menu_title', '', 'pagNumber']
精彩!!!! ...这是我需要的一切! – Alejandro
您需要做的是“逃避”特殊字符,如r'\^'
。但是,在这种情况下,比正则表达式更好:
line = "Some sort of general menu^a_sub_menu_title^^pagNumber"
(menu, title, dummy, page) = line.split('^')
以更直接的方式为您提供组件。
精彩!!!! ......这是我需要的一切! – Alejandro
你可以只说string.split("^")
将字符串分成包含每个段的数组。唯一需要注意的是,它会将连续插入的字符分成一个空字符串。你可以通过将连续的克拉折叠成一个克拉,或者检测结果数组中的空字符串来防止这种情况发生。
欲了解更多信息,请参阅http://docs.python.org/library/stdtypes.html
这是否帮助?
精彩!!!! ......这是我需要的一切!!!! – Alejandro
如果你只是想三件你可以做到这一点通过生成器表达式:
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']
这也有可能是你的文件正在使用的格式,是与csv
模块兼容,还可以观察到的是,特别是如果格式允许引用,因为然后line.split
会中断。如果格式不使用引号,它只是分隔符和文本,line.split
可能是最好的。
此外,对于re
模块,任何特殊字符都可以使用\
进行转义,如r'\^'
。我建议在跳转使用re
之前建议1)学习如何编写正则表达式,2)首先寻找解决问题的方法,而不是跳至正则表达式 - “有些人在遇到问题时,会想”我知道,我会用正则表达式。“现在他们有两个问题。 »
一个简单的谷歌搜索术语“蟒蛇拆分字符串”会产生你的答案。我并不是说要苛刻,但如果你不学习如何进行谷歌搜索,并且你的所有问题都依赖堆栈溢出,那么要成为一名称职的程序员需要很长时间。祝你好运。 –