Jay
Jay

Reputation: 9656

How to get the next token (int, float or string) from a file in Python?

Is there some way to just get the next token from a file in Python, as for example the Scanner class does in Java?

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

I'd like to ignore whitespaces, tabs, newlines and just get the next int/float/word from the file. I know I could read the lines and build something like Scanner myself, but I'd like to know if there isn't already something that I could use.

I've searched around but could only find line-oriented methods.

Thank you!

Upvotes: 6

Views: 6525

Answers (4)

jitter
jitter

Reputation: 54615

I don't think there is really something around that sophisticated.

But you can take a look at the following options

  • use re.split(pattern, string) and get what you want by providing regex's
  • There is somewhere a Scanner class in the re module (but I don't think they developed it further)
  • You could also consider using tokenize + StringIO
  • Or as you yourself mentioned: Build one yourself, donate it do community and get famous ;)

Upvotes: 1

ptman
ptman

Reputation: 917

Check out the shlex-module in the standard library: 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"')))

It does not handle floats the way you seem to want. Maybe you can extend or modify it.

Upvotes: 10

YOU
YOU

Reputation: 123881

if your file is *.ini alike text files, you could use ConfigParser module

There is few examples out there.

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

and pyparsing will do that for other purpose, I think. I havn't use pyparsing before, so I have no clue right now.

http://pyparsing.wikispaces.com/

Upvotes: 0

user59634
user59634

Reputation:

Probably you can take a look at PLY

Upvotes: 0

Related Questions