如何以函数样式打印包含非科学字符的列表元素?

2024-09-30 18:20:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在Python2.7中处理包含非ASCII字符的字符串。 具体来说,我希望打印以下列表中的元素,以便显示它们的外部表示:

foo = "mädchen wörter mutter".split()

像这样:

^{pr2}$

只是我需要用功能性的风格。但是如果我不使用print尝试以下操作,则显示的是内部表示:

^{3}$

我尝试过像这样使用print,但显然它也不起作用,因为它打印的是整个列表而不是每个单独的元素:

>>> print [x for x in foo]
['m\xc3\xa4dchen', 'w\xc3\xb6rter', 'mutter']

print放在方括号内会返回语法错误:

>>> [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

谢谢你的帮助!在


Tags: innone元素列表forfooshowascii
2条回答

使用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的返回值。它被show(..)应用于每个元素,并且由于函数返回None,因此可以看到3Nones


def show(x):
    print(x)

[show(x) for x in foo]
mädchen
wörter
mutter
[None, None, None]

如果你把它写在脚本里就行了。当您在解释器中编写这个函数时,每次调用函数时,都会打印值,最后也会打印列表。如果在.py文件中编写相同的代码,则不会打印列表。在

相关问题 更多 >