拆分两个字母以创建一个单词python 3
我正在尝试编写一段代码,最终解码文件中的以下格式的单词:拆分两个字母以创建一个单词python 3,python,python-3.x,Python,Python 3.x,我正在尝试编写一段代码,最终解码文件中的以下格式的单词: first letter, last letter rest of word 然后,代码将获取这些单词,并使用单词列表对它们进行交叉检查,以确定哪些单词不是实际单词。 这是一个家庭作业,但我对python非常陌生,需要一些帮助。到目前为止,我已经能够打开编码的消息并让python打印所有编码的单词,但我一直在研究如何将第一个字母和最后一个字母分开,并让它们与下面一行中的其余字母组成一个单词。 我开始以小块的方式攻击它,这是我到目前为止所
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将其视为一个字符而不是两个字符,这意味着我不能使用split拆分字母,因为它返回“超出范围”错误。
因为我不知道如何让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
但这会在每行的每个字母之间加一个逗号。为什么枚举函数不起作用?如果我正确理解了您试图实现的目标,那么这里有一些代码来解码您的消息:
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
是一个迭代器,我们可以调用它来提升它并获得下一个值,因此我们不需要中的行号,而是在每次迭代中读取两行
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()
这很有帮助,但我搞砸了。这些字母在文本文件中不以逗号分隔,而是显示为:gdexample^。但是python将“gd”视为一个事物而不是两个独立的事物,因此当我尝试使用字母[0]和字母[1]拆分它时,它会返回一个“超出范围”错误。如何让python将前两个字母视为单独的字符,以便拆分它们?如果这两个字母不是由特殊字符分隔的,那么您不需要(不能)拆分它,而是应该将整行放入一个变量中,并通过简单的索引访问这两个字符。而不是letters=line.split(“,”)
doletters=line
<代码>字母[0]
将成为第一个字符字母[1]
第二个字符。