我正在尝试编写一个代码,该代码最终将解码文件中的单词格式:
first letter, last letter
rest of word
然后代码将获取这些单词并用单词列表交叉检查它们以确定哪些单词不是实际单词。 这是一个家庭作业,但我对python很新,可以真正使用一些帮助。到目前为止,我已经能够打开编码信息并获取python来打印所有编码的单词,但我仍然坚持如何分割第一个和最后一个字母并让它们与其余字母形成一个单词在下面的行。 我开始用小块攻击这个,这是我到目前为止所做的代码:
filef=open('coded_msg.txt')
R=list(filef)
for line in R:
print(str.join("",(R)))
break
这是实际工作的代码。我尝试了其他几件事,但所有这些都会导致各种错误。我不希望它为我做,但任何正确方向的推动都将非常感激。
更新: 一切都在工作,除了这个小部分: 如我的评论中所述,第一个和最后一个字母的实际格式如下:ab Python将其视为一个字符而不是两个字符,这意味着我无法使用拆分拆分字母,因为它返回“超出范围”错误。 因为我无法弄清楚如何让python将两个字母识别为单独的字符,我试图在两个字母之间插入一个逗号,所以格式为:a,b 这是我的代码:
f=open("coded_msg.txt")
y=f.read()
for i, line in enumerate(y):
if i%2==0:
continue
else:
print(",".join(y))
break
但这会在每行的每个字母之间加一个逗号。为什么枚举函数不起作用?
答案 0 :(得分:1)
如果我理解你想要实现的目标,那么这里有一些代码可以解码你的信息:
f = open('coded_msg.txt')
your_list_of_allowed_words=[] # Put your allowed words in this list
for i, line in enumerate(f):
if i%2 == 0: # Lines with index 0,2,4,...are those with first letter, last letter
letters=line.split(",")
else: # Lines with index 1,3,5,... are those with rest of word
word = "%s%s%s" % (letters[0].strip(), line.strip(), letters[1].strip())
if word in your_list_of_allowed_words:
print(word)
f.close()
更好的版本会使用f
是迭代器的事实,我们可以调用next
来推进它并获得下一个值,因此我们不需要for
中的行号但是在每次迭代中都要读两行。
f = open("coded_msg.txt")
your_list_of_allowed_words=[]
for line in f:
letters=line.split(",")
word = "%s%s%s" % (letters[0].strip(), next(f).strip(), letters[1].strip())
if word in your_list_of_allowed_words:
print(word)
f.close()