如何在Python中从文件中获取下一个令牌(整数、浮点数或字符串)?

6 投票
4 回答
6253 浏览
提问于 2025-04-15 16:20

有没有什么方法可以在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,所以现在也不太清楚。

http://pyparsing.wikispaces.com/

1

我觉得目前还没有什么特别复杂的东西。

不过你可以看看以下这些选项:

  • 使用 re.split(pattern, string),通过提供正则表达式来获取你想要的结果。
  • 在 re 模块里有一个 Scanner 类(不过我觉得他们没有进一步开发这个)。
  • 你也可以考虑使用 tokenizeStringIO
  • 或者就像你自己提到的:自己动手做一个,贡献给社区,顺便还可以出名哦;)
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"')))

这个模块处理浮点数的方式可能和你想的不太一样。也许你可以对它进行扩展或修改。

撰写回答