Skip to main content
 首页 » 编程设计

python之在文件中搜索列表中的单词

2025年05月04日29thcjp

我正在尝试在文件中搜索单词。这些词存储在单独的列表中。 找到的单词存储在另一个列表中,最后返回该列表。

代码如下:

def scanEducation(file): 
    education = [] 
    qualities = ["python", "java", "sql", "mysql", "sqlite", "c#", "c++", "c", "javascript", "pascal", 
             "html", "css", "jquery", "linux", "windows"] 
    with open("C:\Users\Vadim\Desktop\Python\New_cvs\\" + file, 'r') as file1: 
    for line in file1: 
        for word in line.split(): 
            matching = [s for s in qualities if word.lower() in s] 
            if matching is not None: 
                education.append(matching) 
return education 

首先,它返回一个列表,其中包含一堆空“座位”,这意味着我的比较不起作用?

结果(扫描4个文件):

"C:\Program Files (x86)\Python2\python.exe" C:/Users/Vadim/PycharmProjects/TestFiles/ReadTXT.py 
[[], [], [], [], [], [], [], [], [], ['java', 'javascript']] 
[[], [], [], [], [], [], [], [], [], ['pascal']] 
[[], [], [], [], [], [], [], [], [], ['linux']] 
[[], [], [], [], [], [], [], [], [], [], ['c#']] 
 
Process finished with exit code 0 

输入文件包含:

Name: Some Name 
Phone: 1234567890 
email: some@email.com 
python,excel,linux 

第二期每个文件包含3个不同的技能,但是函数只找到1个或2个。这也是一个不好的比较还是我这里有不同的错误?

我希望结果是一个只包含找到的技能的列表,没有空白的地方,并且可以找到文件中的所有技能,而不仅仅是其中的一些技能。

编辑:当我执行 word.split(', ') 时,函数确实找到了所有技能 但如果我希望它更通用,如果我不知道究竟是什么将它们分开,那么找到这些技能的好方法是什么?

请您参考如下方法:

您得到空列表是因为 None 不等于空列表。您可能需要将条件更改为以下内容:

if matching: 
    # do your stuff 

您似乎正在检查质量列表中的字符串中是否存在子字符串。这可能不是你想要的。如果您想检查出现在质量列表中的一行中的单词,您可能需要将您的列表理解更改为:

words = line.split() 
match = [word for word in words if word.lower() in qualities] 

如果您要同时匹配 、 和空格,您可能需要查看正则表达式。参见 Split Strings with Multiple Delimiters? .