【发布时间】:2014-01-03 05:33:43
【问题描述】:
我正在尝试从当前文件中创建一个包含多行字谜的新文件。
def Ana(str1, str2):
str1_list = list(str1)
str1_list.sort()
str2_list = list(str2)
str2_list.sort()
return (str1_list == str2_list)
newerfile=open("ana.txt","w")
f = open("words.txt")
for word in f:
s = str(word)
for word2 in f:
if word!=word2:
if Ana(word, word2) is True:
s += (' ') + str(word2)
if s!=str(word):
newerfile.write(s)
以上是我当前的代码,但它给我的只是一个空文件。经过一番试验,我相信问题出在最后一行的第四行——“if isAnagram(word, word2) if True:”
该功能不适用于我拥有的文件。我尝试了一个更基本的代码版本来针对一个单词测试整个文件。由于文件中有“was”和“saw”这两个词,我应该得到这些,但没有打印任何内容。
y = 'was'
for line in open('real_words.txt'):
if isAnagram(line,'was') is True:
y += (' ') + str(line)
print(y)
当我提供单词列表但不是文件时,该功能工作正常。任何帮助表示赞赏。
如果函数返回true,还有什么方法可以从文件中删除单词和所有字谜?
【问题讨论】:
-
你指的
Ana是isAnagram函数吗?顺便说一句,你的第一段代码是if isAnagram() if True,而你的第二段代码是if isAnagram() is True。 -
感谢您指出,Ana 和 isAnagram 是相同的,当我在这里重写代码时,is 和 if 是拼写错误。
-
我怎样才能得到文件中相同单词的 2 个列表?
-
"for word and word2 in "file":" 会起作用吗?
-
当你做
for word in f时,这是一个迭代器,即内循环第一次迭代后它会被耗尽。如果要测试所有单词组合,请先将它们复制到列表中,或使用itertools.product
标签: python file function anagram