如何从Python文件中获取下一个标记(int、float或string)?
是否有某种方法可以从Python中的文件中获取下一个令牌,例如Java中的Scanner类如何从Python文件中获取下一个标记(int、float或string)?,python,Python,是否有某种方法可以从Python中的文件中获取下一个令牌,例如Java中的Scanner类 File file = new File("something"); Scanner myinput = new Scanner(file); double a = myinput.nextDouble(); String s = myinput.next(); 我想忽略空格、制表符、换行符,只从文件中获取下一个int/float/word。我知道我可以阅读这些文字,自己制作一些类似扫描仪的东西,但我想
File file = new File("something");
Scanner myinput = new Scanner(file);
double a = myinput.nextDouble();
String s = myinput.next();
我想忽略空格、制表符、换行符,只从文件中获取下一个int/float/word。我知道我可以阅读这些文字,自己制作一些类似扫描仪的东西,但我想知道是否已经有我可以使用的东西了
我四处搜索,但只能找到面向行的方法
谢谢大家! 如果文件是类似于*.ini的文本文件,则可以使用ConfigParser模块 这方面的例子很少 我想,pyparsing会为其他目的这么做。 我以前没有使用过pyparsing,所以我现在没有任何线索
您可能可以查看标准库中的shlex模块:
它无法按您希望的方式处理浮动。也许你可以扩展或修改它。我不认为这里面有什么复杂的东西 但您可以查看以下选项
- 通过提供regex的
- re模块中有一个类(但我认为他们没有进一步开发) 你也可以考虑使用+
- 或者就像你自己提到的:自己建造一个,捐给社区,然后出名;)李>
sys.stdin
并使用迭代或get_token()
获取下一个令牌。不要将python保留字用作变量名。在、str
或list
中重新定义,然后得到可能难以调试的有趣错误消息,这是一个常见的陷阱。@cfi:谢谢--我在示例中将“in”改为“input”。将问题从关键字改为内置。您很安全,因为您可能在Python 2上。*。在Python3中,raw\u input()
被input()
替换。小写的扫描器
可能是安全的…Pyparsing不再托管在wikispaces.com上。去
import shlex
import StringIO # use in place of files
list(shlex.shlex(StringIO.StringIO('Some tokens. 123, 45.67 "A string with whitespace"')))