Python当在列表上使用len时,如何解决<的TypeError?

时间:2019-06-27 22:52:01

标签: python python-3.x typeerror

仍在这里学习,并为课程设计我的最终项目。问题出在这里:我试图在浏览列表时写一个新文件,并在另一个文件中检查列表中的这些项目。如果找到它们,应该将它们添加到新文件中。现在,我收到一个TypeError:

Traceback (most recent call last):
      File "C:/Users/jesse/OneDrive/Documents/PycharmProjects/KimmelFreeman_CMIT450_Project/KimmelFreeman_CMIT450_Project.py", line 154, in <module>
        while x < len(list1):
    TypeError: '<' not supported between instances of 'str' and 'int'

我正在尝试检查x是否小于列表的len,以继续检查。我这样做是因为之前我只能让它返回列表中位置0的值。现在,我根本无法正常工作。超级令人沮丧。我试过在len周围添加str(),但随后x + = 1产生了错误。显然我没有正确执行此操作。我检查了类似的帖子,却找不到一个,但是如果有一个,请指出我的方向。

我希望代码可以遍历列表,并对照输入文件进行检查,如果找到肯定的结果,请将其保存到新文件中。

我不确定您需要看哪些部分,并且有很多代码,因此我将包括产生错误的区域:

# Ask user for needed keywords or symbols
user_keywords = input("What keywords or special symbols would you like to search the provided file for?\n"
                      "Please separate each entry with a comma.\nIf you would like to just search for question marks,"
                      " please just type n.\n")
# Holding list, using comma as a way to separate the given words and symbols
list1 = list(user_keywords.split(','))
# Print list for user to see
print("You have entered the following keywords and/or special symbols: ", list1)

outFileName = input()
outFile = open(outFileName,'w')

def filter_lines_by_keywords(lines_to_filter, key_words):
    key_words_s = set(key_words)
    return filter(lambda l: set(l.split()) & key_words_s, lines_to_filter)

for x in list1:
    outFile.write('Results for keywords and symbols:' + '\n')
    i =0
    while i < len(list1):
        res = filter_lines_by_keywords(lines_to_filter= file1lines, key_words= list1)
        outFile.write(str(list(res)))
        i += 1

outFile.close()

让我知道是否需要添加更多代码。谢谢!

修改 已更新以反映如何制作list1。我正在使用相同的变量。新秀错误。但是,即使我更改代码并解决同一变量的问题,我也无法使代码移出列表中的第一个位置以查看其中的其他项。有任何想法吗?我在做什么错了?

0 个答案:

没有答案