Python 如何正确拆分代码字符串

Python 如何正确拆分代码字符串,python,string,syntax,Python,String,Syntax,我正试图用Python为Java编写一个基本的词法分析器。我现在面临的问题是将一行字符串拆分为单词/标记 示例: if (x < 3) { x = 3; } else { x = 0; } for line in code.readlines(): for word in line.split(): print word 我搜索了一个解决方案,但只找到了使用正则表达式的解决方案,有没有一种不用正则表达式的方法?因为我不知道如何使用它们,而且我现在

我正试图用Python为Java编写一个基本的词法分析器。我现在面临的问题是将一行字符串拆分为单词/标记

示例:

if (x < 3)
{
    x = 3;
}
else
{
    x = 0;
}
for line in code.readlines():
    for word in line.split():
        print word
我搜索了一个解决方案,但只找到了使用正则表达式的解决方案,有没有一种不用正则表达式的方法?因为我不知道如何使用它们,而且我现在没有足够的时间来学习

任何帮助都将不胜感激……

Python string
.split()
函数,在默认情况下分割以空格分隔的字符串,并返回包含任何不带空格的混合字符的列表。我的简单建议是,在使用
.split()
函数之前,用新的两个空格符号替换符号字符:

for line in code.readlines():
    for sign in '({[<+-=*/%;>]})':
        line = line.replace(sign, ' %s ' % sign)
    for word in line.split():
        print word
用于代码中的行。readlines():
对于登录“({[]})”:
行=行。替换(符号“%s”%sign)
对于第行中的单词。拆分():
印刷字

是的,但这是Java代码,Java允许这样做:
如果(x>3){}
至少,您需要为您的语言提供一组有效的语法标记并与之匹配。否则,这种方法将一事无成。请看一下模块。@Shashank我有一个完整的有效语法标记列表,我只是在这里遇到了问题,如果我能够按照我的意愿拆分行,那么我将能够根据我定义的标记集检查每个单词/标记。上面的代码只是我代码的一小部分……仅仅使用Python正则表达式来用Java语法对文本进行lex处理几乎是不可能的。类似于
pyparsing
库的东西可能正是您所需要的。
{[;]}
我刚刚包括了分号,这很有效。。。谢谢,如果(x==3),我认为这将失败。因为它将相等运算符==拆分为两个赋值运算符==。这就是您想要的吗?此代码工作正常,但稍后程序员必须检查两个特殊符号是否相似
for line in code.readlines():
    for word in line.split():
        print word
for line in code.readlines():
    for sign in '({[<+-=*/%;>]})':
        line = line.replace(sign, ' %s ' % sign)
    for word in line.split():
        print word