python readline()方法在我的代码中无法正常工作

lstz6jyr  于 2023-09-29  发布在  Python
关注(0)|答案(4)|浏览(98)

我一直在解决解码问题。我认为我的函数decode可以正常工作。(下面是完整的代码)但是,我不认为readline()方法不能正常工作。我应该把print(decode(line))线放在哪里??
完整代码:

import matplotlib.pyplot as plt
import pandas as pd

def decode(encoded_str):
    decoded_str = ''
    for char in encoded_str:

        decoded_str += chr(ord(char)-1)
    return decoded_str

print(decode('Hp Jsjti')) #print Go Irish

f=open('data/secret_message.txt','r')
# read and process the file one line at a time 
while True:
    line = f.readline()

    if line =='':
        break
print(decode(line))
f.close()

我试着更换了几次线,但它没有显示任何东西。

2mbi3lxu

2mbi3lxu1#

您正在打印while循环外部的line变量,因此它将返回undefined并且不会打印任何内容。
考虑在while循环中打印line变量:

while True:
    line = f.readline()
    print(decode(line)) # Decoding each line after reading it

    if line === '': # Also consider `===` instead of `==` read more here: https://stackoverflow.com/questions/359494/which-equals-operator-vs-should-be-used-in-javascript-comparisons
        break

希望这对你有帮助!

pw9qyyiw

pw9qyyiw2#

下面是一个如何读取文件并解码行的示例:
1.)使用with打开文件(这样,您就不必显式调用file.close
2.)不要使用file.readline(),直接在文件对象上搜索以获取行。
3.)在decode()函数中,我添加了空格" "特殊情况

def decode(encoded_str):
    decoded_str = []
    for char in encoded_str:
        if char == " ":
            decoded_str.append(char)
        else:
            decoded_str.append(chr(ord(char) - 1))

    return "".join(decoded_str)

with open("your_file.txt", "r") as f:
    for line in f:
        line = line.strip()  # strip whitespaces from the line
        if line == "":
            continue  # skip empty lines
        print(decode(line))
rvpgvaaj

rvpgvaaj3#

line变量仅在while块中有效。
只需缩进print(decode(line))

c0vxltue

c0vxltue4#

遍历文件以查找空字符串,然后在找到空字符串后退出循环。在最好的情况下,您最终将没有输出,因为迭代的结果将是一个空字符串。
你可能想要更像这样的东西:

while True:
    line = f.readline()
    print(decode(line))

    if line =='':
        break
f.close()

或者更好:

for line in f.readlines():
    print(decode(line))

相关问题