我正在尝试用Python编写基本的Java词法分析器。我现在面临的问题是将一行字符串拆分为单词/标记。
示例:
if (x < 3)
{
x = 3;
}
else
{
x = 0;
}
我想让它返回一个这样的列表:
["if", "(", "x", "<", "3", ")", ...
但我的代码正在返回
["if", "(x", "<", "3)"]
我的代码:
for line in code.readlines():
for word in line.split():
print word
我搜索了一个解决方案但只找到了使用正则表达式的解决方案,有没有办法在没有正则表达式的情况下执行此操作?因为我不知道如何使用它们,我现在没有足够的时间来学习它......
任何帮助将不胜感激......
答案 0 :(得分:3)
Python字符串.split()
函数,默认情况下拆分由空格分隔的字符串,并返回包含任何不带空格的混合字符的列表。我的简单建议是在使用.split()
函数之前用新的两个边空格符号替换符号字符:
for line in code.readlines():
for sign in '({[<+-=*/%;>]})':
line = line.replace(sign, ' %s ' % sign)
for word in line.split():
print word