gpt4 book ai didi

Python:比较两个应该相同但不相同的字符串

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

我是菜鸟所以我希望这是问这个问题的正确地方。这真让我抓狂。我在一些文本文件中寻找一个句子,这里是部分代码:

SentenceIMLookingfor='blha blha blah'
with open('textfile.lua','r') as my_file:
raw_dadat=my_file.read().split('\n')
for i in range(1, len(raw_dadat)):
if(raw_dadat[i]==SentenceIMLookingfor):
DO_SOMETHING

嗯,它什么也没做。(我需要知道“SentenceIMLookingfor”在哪一行)。我已经检查了 ID(当然它们不一样,所以如果我使用“is”而不是“==”,它将不起作用)。此外,我确定该句子在我的文本文件中,它甚至存储在 raw_data[210] 中。我检查了“类型”,它是 str。句子中还有大约 3 个空格,我不知道这是否有帮助,"len(raw_dadat)"或多或少等于 4000。好吧,我不明白我做错了什么。非常感谢!!

最佳答案

罪魁祸首很可能是额外的间距。您也可以尝试将字符串小写。

SentenceIMLookingfor='blha blha blah'
with open('textfile.lua','r') as my_file:
for line in my_file:
if line.lower().strip() == SentenceIMLookingfor:
#DO_SOMETHING

但是,如果您要检查的行不是完全您要查找的 Sentence,则需要使用 in 运算符要检查是否相等,所以将上面的 if 替换为

        if SentenceIMLookingfor in line.lower(): # you may not want .lower()

由于不需要将整个文件读入内存,您可以使用for line in my_file 遍历文件的行。 .lower() 将字符串转换为所有小写字母,.strip() 切断任何前面或结尾的空格


正如@SethMMorton 在评论中所建议的,您可以使用enumerate 来迭代行号for i, line in enumerate(my_file)

如果你想收集这个字符串出现的行号(这似乎很可能)你可以通过列表理解来完成

with open('textfile.lua','r') as my_file:
line_nos = [i for i, line in enumerate(my_file) if line.lower().strip() == SentenceIMLookingfor]

关于Python:比较两个应该相同但不相同的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17999283/

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