如何在Python中从文件中获取下一个令牌(整数、浮点数或字符串)?
有没有什么方法可以在Python中像Java的Scanner类那样直接从文件中获取下一个标记(token)呢?
File file = new File("something");
Scanner myinput = new Scanner(file);
double a = myinput.nextDouble();
String s = myinput.next();
我想忽略空格、制表符和换行符,只获取文件中的下一个整数、浮点数或单词。我知道我可以读取行并自己构建一个类似Scanner的东西,但我想知道是否已经有现成的工具可以使用。
我搜索了一下,只找到了一些按行处理的方法。
谢谢!
4 个回答
0
如果你的文件是类似于*.ini的文本文件,你可以使用ConfigParser模块。
网上有一些例子可以参考。
http://docs.python.org/library/configparser.html
而pyparsing可以用来处理其他用途,我觉得也是这样。 我之前没有用过pyparsing,所以现在也不太清楚。
1
我觉得目前还没有什么特别复杂的东西。
不过你可以看看以下这些选项:
使用 re.split(pattern, string)
,通过提供正则表达式来获取你想要的结果。- 在 re 模块里有一个 Scanner 类(不过我觉得他们没有进一步开发这个)。
- 你也可以考虑使用 tokenize 和 StringIO。
- 或者就像你自己提到的:自己动手做一个,贡献给社区,顺便还可以出名哦;)
10
可以看看标准库里的shlex模块:http://docs.python.org/library/shlex.html
import shlex
import StringIO # use in place of files
list(shlex.shlex(StringIO.StringIO('Some tokens. 123, 45.67 "A string with whitespace"')))
这个模块处理浮点数的方式可能和你想的不太一样。也许你可以对它进行扩展或修改。