osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Please help on print string that contains 'tab' and 'newline'


Thanks Peter,

  replace print with os.write  fixed the problem.



On Sun, Jan 28, 2018 at 3:57 AM, Peter Otten <__peter__ at web.de> wrote:

> Jason Qian via Python-list wrote:
>
> > HI
> >
> >    I have a string that contains \r\n\t
> >
> >    [Ljava.lang.Object; does not exist*\r\n\t*at
> >    [com.livecluster.core.tasklet
> >
> >
> >    I would like to  print it as :
> >
> > [Ljava.lang.Object; does not exist
> >      tat com.livecluster.core.tasklet
> >
> >   How can I do this in python print ?
>
> Assuming the string contains the escape sequences rather than an actual
> TAB, CR or NL you can apply codecs.decode():
>
> >>> s = r"[Ljava.lang.Object; does not exist\r\n\tat
> com.livecluster.core.tasklet"
> >>> print(s)
> [Ljava.lang.Object; does not exist\r\n\tat com.livecluster.core.tasklet
> >>> import codecs
> >>> print(codecs.decode(s, "unicode-escape"))
> [Ljava.lang.Object; does not exist
>         at com.livecluster.core.tasklet
>
> Note that this will decode all escape sequences that may occur in a string
> literal
> in Python, e. g.
>
> >>> codecs.decode(r"\x09 \u03c0 \N{soft ice cream}", "unicode-escape")
> '\t ? ?'
>
> and will complain when the string is not a valid Python string literal:
>
> >>> codecs.decode(r"\x", "unicode-escape")
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> UnicodeDecodeError: 'unicodeescape' codec can't decode bytes in position
> 0-1: truncated \xXX escape
>
> If you need more control you can build your own conversion routine:
>
> import re
>
> lookup = {
>     "r": "\r",
>     "n": "\n",
>     "t": "\t",
> }
>
> def substitute(match):
>     group = match.group(1)
>     return lookup.get(group, group)
>
> def decode(s):
>     return re.sub(r"\\(.)", substitute, s)
>
> s = decode("alpha\\n \\xomega\\\\")
> print(s)
> print(repr(s))
>
>
> --
> https://mail.python.org/mailman/listinfo/python-list
>