文件迭代和变量搜索

2024-05-03 22:17:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我还不熟悉python中的文件I/O,因此在弄清楚如何在文件中查找特定变量时遇到了一些麻烦。你知道吗

这是我要打开的文件(txt类型):

grelha = [['O', 'H', 'L', 'E', 'M', 'R', 'R', 'V', 'U'],

          ['B', 'B', 'R', 'A', 'N', 'C', 'O', 'Z', 'A'],

          ['S', 'R', 'A', 'M', 'S', 'U', 'P', 'A', 'O'],

          ['A', 'A', 'B', 'A', 'P', 'O', 'T', 'Z', 'Z'],

          ['L', 'N', 'Z', 'R', 'O', 'E', 'R', 'N', 'U'],

          ['I', 'U', 'I', 'E', 'P', 'D', 'O', 'I', 'I'],

          ['L', 'O', 'L', 'L', 'O', 'R', 'A', 'C', 'A'],

          ['I', 'T', 'M', 'O', 'T', 'E', 'R', 'P', 'P'],

          ['L', 'I', 'E', 'A', 'Z', 'V', 'Y', 'U', 'U']]
palavras = ['branco','preto','azul','verde','rosa','amarelo','vermelho','cinza','lilas']

这是我得到的密码:

def file():
    game_file = open(str(input("What is the name of the file?")), "r+")
    for i in game_file:
        if i == 'grelha':#"I've tried without it being a string as well"
            print (i)    

据我所知,没有任何方法可以帮助我做到这一点,而且我也不太清楚在这种情况下迭代是如何工作的。你知道吗

如果有人能帮我解决这个问题,解释一下迭代,那就太好了!你知道吗


Tags: 文件thetxtgame类型filepalavrasverde
2条回答

您所做的似乎天真地假设,仅仅因为文件内容是有效的python,用python打开它就会将其解析为python。绝对不是这样。您需要选择一种存储数据的格式,以便在需要读回数据时能够正确地解释数据。你知道吗

例如,您可能会发现JSON是存储此类结构化数据的完美方式:

{"grelha": [["O", "H", "L", "E", "M", "R", "R", "V", "U"], ["B", "B", "R", "A", "N", "C", "O", "Z", "A"], ["S", "R", "A", "M", "S", "U", "P", "A", "O"], ["A", "A", "B", "A", "P", "O", "T", "Z", "Z"], ["L", "N", "Z", "R", "O", "E", "R", "N", "U"], ["I", "U", "I", "E", "P", "D", "O", "I", "I"], ["L", "O", "L", "L", "O", "R", "A", "C", "A"], ["I", "T", "M", "O", "T", "E", "R", "P", "P"], ["L", "I", "E", "A", "Z", "V", "Y", "U", "U"]], "palavras": ["branco", "preto", "azul", "verde", "rosa", "amarelo", "vermelho", "cinza", "lilas"]}

然后您可以使用内置的JSON模块在程序中读取它:

import json

with open('f.json') as f:
    data = json.loads( f.read() )
print data['grelha']

默认情况下,python逐行读取文件,因此if i == 'grelha'将一无所获。你知道吗

如果要查找以palavras开头的行,可以使用startwith()方法:

In [3]: for line in file:
   ...:     if line.startswith('palavras'):
   ...:         print line
   ...:         
palavras = ['branco','preto','azul','verde','rosa','amarelo','vermelho','cinza','lilas']

对于文件,逐行迭代; 对于str,迭代是逐字符进行的

一般来说,python将文件视为字符串,因此不能在文件中编写python代码,palavras = ['branco','preto','azul','verde','rosa','amarelo','vermelho','cinza','lilas']行是字符串,而不是代码。你仍然需要解析它们。你知道吗

相关问题 更多 >