Is there any function for reading a file while ignoring *\n* occuring in the file?

can you be a bit more precise? are we talking about text files or binary files? how do you want to treat any newlines that actually appear in the file?

I believe the OP is referencing this behavior:

  for line in file('x.txt'):
    assert not (
      line.endswith('\r') or
      line.endswith('\n')), "Don't want this"
  else:
    yay()  # we never end up reaching this

which can be done with a simple generator/wrapper:

  def unnewline(iterator):
    for line in iterator:
      yield line.rstrip('\r\n')
  for line in unnewline(file('x.txt')):
    assert not (
      line.endswith('\r') or
      line.endswith('\n')), "Don't want this"
  else:
    yay()  #  we get here this time

Alternatively, the content can just be modified on the fly:

  for line in file('x.txt'):
    line = line.rstrip('\r\n')
    ...

yes, the interpretation would differ if it were a binary file, but the above interpretation is a pretty common case (i.e. I encounter it daily, in my processing of client data-feeds).

-tkc


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to