gpt4 book ai didi

Pythonic 字符串测试

转载 作者:行者123 更新时间:2023-11-28 23:02:52 24 4
gpt4 key购买 nike

对于我的信息检索类(class),我必须从一组文件中创建术语索引。有效术语包含一个字母字符,因此为了测试我只做了一个简单的函数并使用了一个 if/then 控制语句。到目前为止,我有:

ALPHA = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

def content_test(term):
for a in ALPHA:
if a in term:
return True
return False

class FileRead():

def __init__(self, filename):
f = open(filename, 'r')
content = f.read()
self.terms = content.split()

def clean(self):
for term in self.terms:
if content_test(term) is False:
try:
terms.remove(term)
except:
pass

现在一切正常(我认为......)但是我一直在尝试学习更多更高级别的 python,我忍不住认为有一种更 pythonic 的方法来检查术语有效性(可能使用 map (),还是 lambda 函数?)。

我是对的还是我想多了?

最佳答案

您可以从简化 content_test() 开始:

def content_test(term):
return any(c.isalpha() for c in term)

事实上,这非常简单,您实际上不再需要单独的函数了。

在这种情况下,我要做的是编写一个仅从文件中生成有效术语的生成器。然后只需使用 list() 构造函数将其转换为列表。通过这种方式,您一次可以只读取一行,如果文件很大,这将为您节省大量内存。

def read_valid_terms(filename):
with open(filename) as f:
for line in f:
for term in line.split():
if any(c.isalpha() for c in term):
yield term

terms = list(read_valid_terms("terms.txt"))

或者,如果您只是打算遍历这些条款,并且只遍历一次,那么就直接这样做,而不是制作一个列表:

for term in read_valid_terms("terms.txt"):
print term,
print

关于Pythonic 字符串测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9316307/

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