Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我需要一种按词汇分割字符串的方法_Python_Lexical Analysis - Fatal编程技术网

Python 我需要一种按词汇分割字符串的方法

Python 我需要一种按词汇分割字符串的方法,python,lexical-analysis,Python,Lexical Analysis,例如,如果给我这个字符串 "asdf bob(1, 2, "a")" 我想把它分成两份 ["asdf", "bob", [1, 2, "a"]] 我尝试过使用SHLEX,但似乎太简单了。它不会将括号拆分为不同的数组,也不会正确拆分逗号 现在,我知道我可以用一些for循环和一些技巧来实现这一点,但我想为这节省空间、时间和速度。谢谢你的帮助 另外,它应该能够拆分多行,例如,如果我有函数 " desu(1, 2){ \n asdf \n }

例如,如果给我这个字符串

"asdf bob(1, 2, "a")"
我想把它分成两份

["asdf", "bob", [1, 2, "a"]]
我尝试过使用SHLEX,但似乎太简单了。它不会将括号拆分为不同的数组,也不会正确拆分逗号

现在,我知道我可以用一些for循环和一些技巧来实现这一点,但我想为这节省空间、时间和速度。谢谢你的帮助

另外,它应该能够拆分多行,例如,如果我有函数

"   desu(1, 2){    \n
        asdf       \n
    }               "
应拆分为

["desu", [1, 2], ["asdf"]]
将大括号拆分为不同的列表


这将节省很多时间!谢谢

你看过吗?这是一个通用的python解析模块,可以帮助您解决这个问题。Pyparsing可用于递归下降解析,如编程语言。对于不遵循已经实现的示例之一的语言,pyparsing模块具有相当陡峭的学习曲线。但是,对于您的语言,我认为您可能可以重用他们网站上的一个示例。

您所描述的是一个解析树,它比简单的词法分析或标记化更进一步。我认为您希望查看AST模块了解这类内容,或者可能是pyBison或类似的东西。