我尝试在Python2.7中处理包含非ASCII字符的字符串。 具体来说,我希望打印以下列表中的元素,以便显示它们的外部表示:
foo = "mädchen wörter mutter".split()
像这样:
^{pr2}$只是我需要用功能性的风格。但是如果我不使用print
尝试以下操作,则显示的是内部表示:
我尝试过像这样使用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
谢谢你的帮助!在
使用
string.join(..)
怎么样?在另外,请注意,您使用的是:
list comprehension
。通常,列表理解是在没有副作用的map
意义上使用的。对每个元素调用show(..)
,并丢弃列表理解的结果,这并不是应该如何使用的。。在它来自list comprehension的返回值。它被
show(..)
应用于每个元素,并且由于函数返回None
,因此可以看到3None
s如果你把它写在脚本里就行了。当您在解释器中编写这个函数时,每次调用函数时,都会打印值,最后也会打印列表。如果在.py文件中编写相同的代码,则不会打印列表。在
相关问题 更多 >
编程相关推荐