*帮助*学习Python教程模块和软件包
我在learnpython.org上做了一个关于模块和包的练习 练习是:在本练习中,您需要打印re模块中所有函数的按字母顺序排序的列表,其中包含单词find 我写的代码是:*帮助*学习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):
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