Python 连接模块中的所有字符串
我准备了以下文件(Python 连接模块中的所有字符串,python,Python,我准备了以下文件(unicode_strings.py),其中包含一些我想用于测试的unicode字符串: # -*- coding: utf-8 -*- # Refer to http://ergoemacs.org/emacs/unicode.txt GREEK = u'ΑΒΓΔ ΕΖΗΘ ΙΚΛΜ ΝΞΟΠ ΡΣΤΥ ΦΧΨΩ αβγδ εζηθ ικλμ νξοπ ρςτυ φχψω' ACCENTS = u'àáâãäåæç èéêë ìíîï ðñòóôõö øùúûüý
unicode_strings.py
),其中包含一些我想用于测试的unicode字符串:
# -*- coding: utf-8 -*-
# Refer to http://ergoemacs.org/emacs/unicode.txt
GREEK = u'ΑΒΓΔ ΕΖΗΘ ΙΚΛΜ ΝΞΟΠ ΡΣΤΥ ΦΧΨΩ αβγδ εζηθ ικλμ νξοπ ρςτυ φχψω'
ACCENTS = u'àáâãäåæç èéêë ìíîï ðñòóôõö øùúûüýþÿ ÀÁÂÃÄÅ Ç ÈÉÊË ÌÍÎÏ ÐÑ ÒÓÔÕÖ ØÙÚÛÜÝÞß'
CURRENCY = u'¤ $ ¢ € ₠ £ ¥'
...
因此,在我的测试文件中,我可以:
from unicode_strings import GREEK
def test1():
print GREEK
现在我想实现一个测试\u all
:
def test_all():
print ALL_UNICODE
如何定义
UNICODE\u strings.py
中定义的所有字符串(所有变量)的串联。显然,我不想手动定义它。如果所有变量都是大写名称,并且没有从其他地方导入任何其他此类字符串,则可以使用:
_uppercase = [k for k in dir() if k.isupper()]
ALL_UNICODE = ' '.join(map(globals().get, _uppercase))
这将连接当前模块全局命名空间中绑定到大写名称的所有unicode字符串
我在这里切换到使用dir()
,因为这比在list(globals())
上循环要简单一些;您不能在globals()
本身上使用列表理解进行循环,因为列表理解变量在循环期间被注入全局命名空间,从而在迭代期间更改globals()
字典的大小。它应该可以工作:
ALL_UNICODE = ' '.join([item for item in dir(unicode_strings) if not item.startswith("__")])
不幸的是,这并不能保证:我在代码中使用大写的常量名称(希望这是公认的做法)。我们所知道的是,我想要连接所有来自于它的变量file@gonvaled:这仅连接该文件中的变量
globals()
仅适用于一个模块。啊哈!我以前误解你了。可能就是这样!让我试试。我更喜欢模块本身,正如马丁所建议的那样。