Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
拆分两个字母以创建一个单词python 3_Python_Python 3.x - Fatal编程技术网

拆分两个字母以创建一个单词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(“,”)
do
letters=line
<代码>字母[0]
将成为第一个字符
字母[1]
第二个字符。