如何以功能样式打印具有非 ASCII 字符的列表元素?
How to print list elements with non-ASCII characters in functional style?
我试图在 Python 2.7 中处理包含非 ASCII 字符的字符串。
具体来说,我想打印以下列表的元素以显示它们的外部表示:
foo = "mädchen wörter mutter".split()
像这样:
>>> for x in foo:
... print x
...
mädchen
wörter
mutter
除了我需要以函数式风格来做。但是如果我在不使用 print
的情况下尝试以下操作,则显示的是内部表示:
>>> [x for x in foo]
['m\xc3\xa4dchen', 'w\xc3\xb6rter', 'mutter']
我试过像这样使用 print
,但它显然也不起作用,因为它会打印整个列表而不是每个单独的元素:
>>> print [x for x in foo]
['m\xc3\xa4dchen', 'w\xc3\xb6rter', 'mutter']
并且将print
放在方括号returns内出现语法错误:
>>> [print x for x in foo]
File "<stdin>", line 1
[print x for x in foo]
^
SyntaxError: invalid syntax
然后我尝试使用一个函数来打印 x
:
>>> def show(x):
... print(x)
...
>>> [show(x) for x in foo]
mädchen
wörter
mutter
[None, None, None]
除了最后的 [None, None, None]
之外(它从哪里来的?)。
有没有一种功能性的方法可以输出这样的东西:
>>> [*do_something* for x in foo]
mädchen
wörter
mutter
感谢您的帮助!
def show(x):
print(x)
[show(x) for x in foo]
mädchen
wörter
mutter
[None, None, None]
如果您将它写在脚本中,它就会真正起作用。当你在解释器中编写它时,每次调用该函数时,都会打印值,最后也会打印列表。如果您在 .py 文件中编写相同的代码,则不会打印列表。
使用 string.join(..)
怎么样?
print "\n".join(foo)
另外,请注意您使用的是:list comprehension
。通常,列表理解在 map
的意义上使用——没有副作用。在每个元素上调用 show(..)
,并丢弃列表理解的结果并不是 应该 的使用方式..
This almost works, except for the [None, None, None] at the end (where does that comes from?).
来自list-comprehension的return值。它是 show(..)
applied 每个元素,并且由于函数 return None
你看到 3 None
s.
我试图在 Python 2.7 中处理包含非 ASCII 字符的字符串。 具体来说,我想打印以下列表的元素以显示它们的外部表示:
foo = "mädchen wörter mutter".split()
像这样:
>>> for x in foo:
... print x
...
mädchen
wörter
mutter
除了我需要以函数式风格来做。但是如果我在不使用 print
的情况下尝试以下操作,则显示的是内部表示:
>>> [x for x in foo]
['m\xc3\xa4dchen', 'w\xc3\xb6rter', 'mutter']
我试过像这样使用 print
,但它显然也不起作用,因为它会打印整个列表而不是每个单独的元素:
>>> print [x for x in foo]
['m\xc3\xa4dchen', 'w\xc3\xb6rter', 'mutter']
并且将print
放在方括号returns内出现语法错误:
>>> [print x for x in foo]
File "<stdin>", line 1
[print x for x in foo]
^
SyntaxError: invalid syntax
然后我尝试使用一个函数来打印 x
:
>>> def show(x):
... print(x)
...
>>> [show(x) for x in foo]
mädchen
wörter
mutter
[None, None, None]
除了最后的 [None, None, None]
之外(它从哪里来的?)。
有没有一种功能性的方法可以输出这样的东西:
>>> [*do_something* for x in foo]
mädchen
wörter
mutter
感谢您的帮助!
def show(x):
print(x)
[show(x) for x in foo]
mädchen
wörter
mutter
[None, None, None]
如果您将它写在脚本中,它就会真正起作用。当你在解释器中编写它时,每次调用该函数时,都会打印值,最后也会打印列表。如果您在 .py 文件中编写相同的代码,则不会打印列表。
使用 string.join(..)
怎么样?
print "\n".join(foo)
另外,请注意您使用的是:list comprehension
。通常,列表理解在 map
的意义上使用——没有副作用。在每个元素上调用 show(..)
,并丢弃列表理解的结果并不是 应该 的使用方式..
This almost works, except for the [None, None, None] at the end (where does that comes from?).
来自list-comprehension的return值。它是 show(..)
applied 每个元素,并且由于函数 return None
你看到 3 None
s.