*帮助*学习Python教程模块和软件包

*帮助*学习Python教程模块和软件包,python,Python,我在learnpython.org上做了一个关于模块和包的练习 练习是:在本练习中,您需要打印re模块中所有函数的按字母顺序排序的列表,其中包含单词find 我写的代码是: import re for x in dir(re): if x[:4] == "find": print x 代码输出: findall finditer 预期产出: ['findall', 'finditer'] 我试过的是: import re for x in dir(re):

我在learnpython.org上做了一个关于模块和包的练习

练习是:在本练习中,您需要打印re模块中所有函数的按字母顺序排序的列表,其中包含单词find

我写的代码是:

 import re
for x in dir(re):
    if x[:4] == "find":
        print x
代码输出:

findall
finditer
预期产出:

['findall', 'finditer']
我试过的是:

import re
for x in dir(re):
    if x[:4] == "find":
        print list(x)
我得到的是:

['f', 'i', 'n', 'd', 'a', 'l', 'l']
['f', 'i', 'n', 'd', 'i', 't', 'e', 'r']

请帮助我,因为结果是一个字符串,所以我可以通过使用
list(x)
将其转换为字符列表,而不是打印
x
来获取字符串。不过,您要做的是将其添加到列表中,然后对其进行排序

import re
names = []
for name in dir(re):
    if name[:4] == 'find':
        names.append(name)

names.sort()
print names
可以将其写入生成器,并使用排序后的
进行排序

print sorted(name for name in dir(re) if name.startswith('find'))
注意-正如我们善意地指出的-
dir
已经对其结果进行了预排序,因此实际上不需要执行排序步骤

您可以使用打印列表:

import re
print [x for x in dir(re) if x[:4] == "find"]
您当前正在调用
list(x)
,其中
x
是一个字符串。这意味着它将把字符串转换成一个字符列表,这就是为什么您会看到输出,例如
['f','i','n','d','a','l','l']

如果您尚未阅读列表理解,您可以:

import re
result = []
for x in dir(re):
    if x[:4] == "find":
        result.append(x) 
print result
这也将建立相同的列表。您还可以使用
startswith()


有一段时间我也对这件事感到困惑。我的思路是从RE(正则表达式)模块本身开始的,该模块包含一个字符串正则表达式搜索函数,我在下面使用该函数,该函数运行良好

import re
mylist=[]
for x in dir(re):
    match = re.search('find', x)
    if match:
            mylist.append(x)
print mylist

这是因为
dir()
按字母顺序返回结果:非常感谢。我也在想。只是个问题。我对python非常陌生,但为什么在dir(re)中使用x代替x呢。与dir(re)@user2395335中的x不同:在列表理解中,您需要指定要添加到列表中的元素,在本例中,这些元素来自
dir(re)
。因此,我们希望每个元素
x
对应
dir(re)
中的每个
x
import re
mylist=[]
for x in dir(re):
    match = re.search('find', x)
    if match:
            mylist.append(x)
print mylist