gpt4 book ai didi

python - learnpython.org 模块练习

转载 作者:太空宇宙 更新时间:2023-11-03 18:49:07 26 4
gpt4 key购买 nike

社区您好,

[序言]:
我有 BASH 脚本背景(仍在学习),并认为尝试另一种语言可能会有益于我的学习过程。对我来说,自然的选择似乎是 Python。我开始学习一点,并完成了 www.learnpython.org 上的练习。特别是Modules and Packages .

[问题]:

导入模块重新打印按字母顺序排序,模块中包含单词的所有函数查找

[尝试过]:

# import the module.
import re

# store output of dir(re) in reLST as string list.
''' I believe that's what happens, correct? '''
reLST = dir(re)

# iterate over reLST and assign m strings matching word containing find.
for element in reLST:
m = re.match("(find\w+)", element)

# Here it prints out the matches, but only using the function .groups()
''' Won't work using print sorted(m) ---why? '''
# Found tutorial online, but no real understanding of .groups() function use.
if m:
print sorted(m.groups())

[预期输出]:
['findall', 'finditer']

[我的输出]:
['findall']
['finditer']

[问题]:
从技术上讲,该代码可以工作并输出从 dir(re) 抓取的所有字符串,但在新行上。我猜这是作为 .groups() 函数的一部分完成的?以正确的格式获得所需输出的好方法是什么?

最佳答案

您应该将结果收集在列表中,然后对它们进行排序:

import re


results = []
for element in dir(re):
m = re.match("(find\w+)", element)
if m:
results.append(m.group(1))

print sorted(results)

此外,您可以使用 startswith(),而不是 re:

import re


results = []
for element in dir(re):
if element.startswith('find'):
results.append(element)

print sorted(results)

或者,使用列表理解在一行中完成相同的事情:

import re

print sorted([element for element in dir(re) if element.startswith('find')])

如果单词 find 可以出现在字符串中的任何位置,则应使用 in 而不是 startswith():

import re

print sorted([element for element in dir(re) if 'find' in element])

关于python - learnpython.org 模块练习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18782430/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com