Python 只打印多行文件/字符串的最后一行

Python 只打印多行文件/字符串的最后一行,python,python-2.x,line-endings,Python,Python 2.x,Line Endings,我搜索了一下堆栈溢出,发现了不同的答案,但没有适合我的情况 我得到的map.txt文件如下: +----------------------+ | | | | | |

我搜索了一下堆栈溢出,发现了不同的答案,但没有适合我的情况

我得到的map.txt文件如下:

+----------------------+                          
|                      |                          
|                      |                          
|                      |                          
|        test          |                          
|                      |                          
|                      |                          
|                      |                          
+------------------------------------------------+
|                      |                         |
|                      |                         |
|                      |                         |
|       Science        |       Bibliothek        |
|                      |                         |
|                      |                         |
|                      |                         |
+----------------------+-------------------------+
当我想使用以下方法打印时:

def display_map():
    s = open("map.txt").read()
    return s


print display_map()
它只是把我打印出来:

 +----------------------+-------------------------+      
当我对另一个文本文件尝试相同的方法时,如:

line 1
line 2
line 3
它工作得很好


我做错了什么?

我猜此文件使用字符(Ascii 13,或
'\r'
)作为换行符;在Windows和Linux上,这只会将光标移回第1列,而不会将光标下移到新行的开头

(当然,这样的行终止符在复制粘贴到堆栈溢出后将无法生存,这就是无法复制的原因)

您可以使用
repr
调试字符串中的奇怪字符:

print(repr(read_map())
它将打印出所有特殊字符都已转义的字符串


如果在
repr
ed字符串中看到
\r
,可以尝试以下操作:

def read_map():
    with open('map.txt') as f:  # with ensures the file is closed properly
        return f.read().replace('\r', '\n') # replace \r with \n
或者,为通用换行符提供
U
标志,这将在读取时将
'\r'
'\r\n'
'\n'
全部转换为
\n
,而不考虑底层操作系统的约定:

def read_map():
    with open('map.txt', 'rU') as f:
        return f.read()


我猜这个文件使用字符(ascii13,或
'\r'
)作为换行符;在Windows和Linux上,这只会将光标移回第1列,而不会将光标下移到新行的开头

(当然,这样的行终止符在复制粘贴到堆栈溢出后将无法生存,这就是无法复制的原因)

您可以使用
repr
调试字符串中的奇怪字符:

print(repr(read_map())
它将打印出所有特殊字符都已转义的字符串


如果在
repr
ed字符串中看到
\r
,可以尝试以下操作:

def read_map():
    with open('map.txt') as f:  # with ensures the file is closed properly
        return f.read().replace('\r', '\n') # replace \r with \n
或者,为通用换行符提供
U
标志,这将在读取时将
'\r'
'\r\n'
'\n'
全部转换为
\n
,而不考虑底层操作系统的约定:

def read_map():
    with open('map.txt', 'rU') as f:
        return f.read()


对我有用。先查一下你的档案。对我有用。首先检查您的文件。如果您认为这解决了您的问题,请勾选此答案旁边的接受标记;)完成!对不起,我还是新来的堆栈溢出。我怎样才能赢得声誉?@alexhold如果你认为这解决了你的问题,那么请勾选此答案旁边的接受标记;)完成!对不起,我还是新来的堆栈溢出。“我怎样才能赢得声誉呢?”阿列克谢说