首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接模块中的所有字符串

连接模块中的所有字符串
EN

Stack Overflow用户
提问于 2013-10-17 10:06:54
回答 2查看 45关注 0票数 0

我准备了以下文件(unicode_strings.py),其中包含一些我想用于测试的unicode字符串:

代码语言:javascript
复制
# -*- coding: utf-8 -*-

# Refer to http://ergoemacs.org/emacs/unicode.txt

GREEK    = u'ΑΒΓΔ ΕΖΗΘ ΙΚΛΜ ΝΞΟΠ ΡΣΤΥ ΦΧΨΩ αβγδ εζηθ ικλμ νξοπ ρςτυ φχψω'
ACCENTS  = u'àáâãäåæç èéêë ìíîï ðñòóôõö øùúûüýþÿ ÀÁÂÃÄÅ Ç ÈÉÊË ÌÍÎÏ ÐÑ ÒÓÔÕÖ ØÙÚÛÜÝÞß'
CURRENCY = u'¤ $ ¢ € ₠ £ ¥'
...

因此,在我的测试文件中,我可以:

代码语言:javascript
复制
from unicode_strings import GREEK

def test1():
    print GREEK

现在我想实现一个test_all

代码语言:javascript
复制
def test_all():
    print ALL_UNICODE

如何定义ALL_UNICODE,使其成为unicode_strings.py中定义的所有字符串(所有变量)的连接。很明显,我不想手动定义它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-17 10:08:38

如果所有变量都是大写名称,并且没有从其他地方导入任何其他此类字符串,则可以使用:

代码语言:javascript
复制
_uppercase = [k for k in dir() if k.isupper()]
ALL_UNICODE = ' '.join(map(globals().get, _uppercase))

这将连接绑定到当前模块全局命名空间中大写名称的所有unicode字符串。

我在这里转到使用dir(),因为这比在list(globals())上循环要少一点;当在循环期间将列表理解变量注入全局命名空间时,不能对globals()本身进行列表理解,从而在迭代期间更改globals()字典的大小。

票数 1
EN

Stack Overflow用户

发布于 2013-10-17 10:19:06

它应该能发挥作用:

代码语言:javascript
复制
ALL_UNICODE = ' '.join([item for item in dir(unicode_strings) if not item.startswith("__")])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19423755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档