# 22.2 `shlex` -- Simple lexical analysis

New in version 1.5.2.

The `shlex` class makes it easy to write lexical analyzers for simple syntaxes resembling that of the Unix shell. This will often be useful for writing minilanguages, (for example, in run control files for Python applications) or for parsing quoted strings.

Note: The `shlex` module currently does not support Unicode input.

The `shlex` module defines the following functions:

`split`( | s[, comments])

  Split the string s using shell-like syntax. If comments is `False` (the default), the parsing of comments in the given string will be disabled (setting the `commenters` member of the `shlex` instance to the empty string). This function operates in POSIX mode. New in version 2.3. Note: Since the `split()` function instantiates a `shlex` instance, passing `None` for s will read the string to split from standard input.

The `shlex` module defines the following class:

class `shlex`( | [instream[, infile[, posix]]])

  A `shlex` instance or subclass instance is a lexical analyzer object. The initialization argument, if present, specifies where to read characters from. It must be a file-/stream-like object with `read()` and `readline()` methods, or a string (strings are accepted since Python 2.3). If no argument is given, input will be taken from `sys.stdin`. The second optional argument is a filename string, which sets the initial value of the `infile` member. If the instream argument is omitted or equal to `sys.stdin`, this second argument defaults to ``stdin''. The posix argument was introduced in Python 2.3, and defines the operational mode. When posix is not true (default), the `shlex` instance will operate in compatibility mode. When operating in POSIX mode, `shlex` will try to be as close as possible to the POSIX shell parsing rules. See section 22.2.1.

See Also:

Module `ConfigParser`:
  Parser for configuration files similar to the Windows .ini files.