【问题标题】:Output text file contains only last letter of the expected result输出文本文件仅包含预期结果的最后一个字母
【发布时间】:2019-01-18 12:51:36
【问题描述】:

我正在尝试获取一个巨大的字符串文件的输出。我正在使用以下代码生成文本文件,但只生成了预期输出的最后一个字母。我也使用 .loc 来隔离输入文件并生成一个仅包含指定行的文件。

>     for l in Y:
>       print(l, end = '')
>     
>     with open("abc.txt", "w") as text_file:
>       print(f'> \n{l}', file=text_file)

我得到以下结果:

> ķ 就是这样。我希望输出是一系列字符串,例如:

> ABCD...K

我们将不胜感激任何帮助。

【问题讨论】:

    标签: python-3.x text return


    【解决方案1】:

    出现问题是因为您使用 f 字符串 (f"> \n{l}") 来格式化您的文本,并且您将 l 变量传递给此 f 字符串。虽然您的 l 变量是在上一个循环的最后一次迭代中最后一次设置的,但您正在打印文件中的最后一项 Y

    正确的语法是:

     with open("abc.txt", "w") as text_file:
         print(f'> \n{Y}', file=text_file) 
    

    或者,也许是你的缩进是错误的,你打算这样做:

     for l in Y:
       print(l, end = '')
    
       with open("abc.txt", "w") as text_file:
         print(f'> \n{l}', file=text_file)
    

    此外,我建议改为这样做:

    with open("abc.txt", "w") as f:
        for l in Y:
            f.write(f'> {l}\n')
    

    如果可能的话,甚至更好:

    with open("abc.txt", "w") as f:
        f.writelines(Y)
    

    【讨论】:

    • 感谢您的回复,我已经尝试了上述方法,但它给了我相同的结果。我将 Y 用于 loc,然后进行一些数据替换。要打印替换后 Y 生成的输出,我将其定义为 l。所以我期待打印 l 而不是 Y。
    • 那么用我提出的第三个解决方案来做这件事呢?你可以在for循环中处理你的数据吗?
    • 我也尝试了第三种解决方案,但它返回 null,甚至不是 K。虽然我有解决这个问题的想法,但我按照您的建议重命名了目录,然后使用了打印功能.虽然它不提供相同格式的输出,但它确实给出了输出。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 2018-06-24
    • 2013-04-25
    • 2013-02-04
    • 1970-01-01
    相关资源
    最近更新 更多