我的函数只说文字文件中的最后一个单词是anagram(第一个辅助函数)。但是文件中的每个单词都是我测试的单词的字谜,并且在主函数之外使用辅助函数独立地返回true。我不确定它是否与string newManagerName = "Some Random Name";
string manager = "CN=Kylie Seany,OU=Test,OU=Users";
int index = manager.IndexOf(",OU=");
string newManager = "CN=" + newManagerName + manager.Substring(index);
Console.WriteLine(newManager);
成为字符串的一部分有关,然后它解释了这一点,但我尝试输入一个if语句,如果它在那里并且确实在那里删除它也没工作。我也做了测试,以确保它正在运行/n
文件中的每个单词,并且它是。
.txt
答案 0 :(得分:2)
这是预期的,基于您用于读取行(file.readline
)的方法。来自documentation:
f.readline()
从文件中读取一行;换行符 (\n
)留在字符串的末尾,只在最后一个省略 文件的行,如果文件没有以换行符结尾。
您的line
有一个尾随换行符,但word
肯定没有。所以,最后,你需要改变的是:
line = content.readline().rstrip()
嗯,这就是你需要改为让它正常工作。此外,我还建议使用with...as
上下文管理器来处理文件I / O.这是一个很好的做法,你会感谢你自己。
with open("small_list.txt") as f:
for line in f:
if is_anagram(word, line.rstrip()):
... # do something here
最好使用for
循环来迭代文件的行(而不是while
,它更干净)。此外,当您使用上下文管理器时,不需要显式调用f.close()
(您当前没有这样做,您只是在没有实际调用它的情况下引用该方法)。
在这个答案中加入@Christian Dean的suggestion,你也可以简化你的anagram函数 - 调用sorted
和将结果返回到一行:
def is_anagram(a, b):
return sorted(a) == sorted(b)