如何从Python中的文件中获取下一个标记(int,float或string)?

时间:2009-11-24 10:11:15

标签: python

有没有办法从Python中的文件中获取下一个标记,例如Scanner类用Java编写?

File file = new File("something");
Scanner myinput = new Scanner(file);
double a = myinput.nextDouble();
String s = myinput.next();

我想忽略空格,制表符,换行符,然后从文件中获取下一个int / float / word。我知道我可以阅读这些内容并自己构建一些类似Scanner的内容,但我想知道是否还有我可以使用的内容。

我已经四处寻找,但只能找到面向行的方法。

谢谢!

4 个答案:

答案 0 :(得分: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"')))

它不像您想要的那样处理浮动。也许你可以扩展或修改它。

答案 1 :(得分:1)

我认为这种复杂的东西并不存在。

但您可以查看以下选项

  • use re.split(pattern, string)并通过提供正则表达式
  • 获得您想要的内容
  • re模块中有一个Scanner类(但我不认为它们是进一步开发的)
  • 您还可以考虑使用tokenize + StringIO
  • 或者你自己提到:自己建造一个,捐出社区并着名;)

答案 2 :(得分:0)

如果您的文件是* .ini相似的文本文件,则可以使用ConfigParser模块

那里的例子很少。

http://docs.python.org/library/configparser.html

我认为,pyparsing会出于其他目的而这样做。 我之前没有使用过pyparsing,所以我现在没有任何线索。

http://pyparsing.wikispaces.com/

答案 3 :(得分:0)

您可以查看PLY