gpt4 book ai didi

Python:在文件中查找一行适用于 Windows 但不适用于 Linux

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

我正在尝试创建一段充当字典的代码。这是一个更大项目的一部分,但似乎工作正常(目前......)。我让它在 Windows 10 上运行,但是一旦我切换到我的 Ubuntu 机器(我将运行该程序的终端机器),它就停止使用我提供的文件。下面是我为这一点乐趣编写的代码。

def commandDefineWord(request):         # NOT WORKING
vanillaRequest = request.split(' ')
clearRequest = (request.lower()).split(' ');

if ((clearRequest[0] == "what") and (clearRequest[1] == "is") and (clearRequest[2] == "the")
and (clearRequest[3] == "definition") and (clearRequest[4] == "for")):
del clearRequest[0];
del vanillaRequest[0];
del clearRequest[0];
del vanillaRequest[0];
del clearRequest[0];
del vanillaRequest[0];
del clearRequest[0];
del vanillaRequest[0]; # Lots of extra word screening
del clearRequest[0];
del vanillaRequest[0];
if (clearRequest[0] == "define"):
del clearRequest[0];
del vanillaRequest[0];
if ((clearRequest[0] == "the") and (clearRequest[1] == "word")):
del clearRequest[0];
del vanillaRequest[0];
del clearRequest[0];
del vanillaRequest[0];

word = (vanillaRequest[0]).upper(); # define the word as a variable
word = word.replace("?", ""); # remove ?'s
dictionary = open("dictionary.txt", "r"); # Open dictionary file
searchLines = dictionary.readlines(); # create a readable copy
dictionary.close(); # Close file for safety

found = False # set as precaution to not finding word
for i, line in enumerate(searchLines): # enumerating all the lines while making them individual
if (("%s\n" % word) == line): # where is the bloody word?
found = True; # word is found
print searchLines[i]; # print result
i+=1; # go to next line of definition
while not searchLines[i].isupper(): # check to see if defintion end is reached
searchLines[i] = searchLines[i].replace("\n", ""); # take away new lines
print "\t %s" % searchLines[i]; # prints defintion
i += 1;
if found == False:
print "Sorry, I could not find a definition for %s." % word

使用 vanillaRequest 和 clearRequest 位是因为(尽管我尽了最大努力)我的大脑告诉我要像我编写的其他函数那样做。这对于这个特定功能来说不是必需的,但在其他功能中,我保留原始请求是必不可少的。

提供一些可能很重要的信息,我使用的词典文本是来自古腾堡计划的“韦氏未删节词典”。很抱歉不知道如何上传这个文件(希望你能找到它)。

这个问题(对我来说)似乎源于“if (("%s\n"% word) == line):"。我不知道是什么原因导致它在 Windows 而不是 Linux 上运行,但我可以提供一些有用的信息。我创建了一个只有这些行的虚拟字典:

HELL

test definition

HECK

它的工作方式与在 Windows 上一样。我认为问题出在文件上,但我找不到。如果我遗漏了任何重要的解谜信息,请在评论中告诉我,我会尽快添加(如果可以的话)!

如果有人能提供任何见解,我们将不胜感激。谢谢!

附言是的,代码有点笨拙,有点碍眼。我不打算改变它,因为它可以正常工作(除了整个“Linux 不想很好地处理我的文件”的困境。

最佳答案

我只是测试了一下,在if (("%s\n"% word) == line):代码之前,打印wordline 变量,word总是大写字符,而line不是。也许这就是 if 语句不起作用的原因。

关于Python:在文件中查找一行适用于 Windows 但不适用于 Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36075183/

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