Python 只打印多行文件/字符串的最后一行
我搜索了一下堆栈溢出,发现了不同的答案,但没有适合我的情况 我得到的map.txt文件如下:Python 只打印多行文件/字符串的最后一行,python,python-2.x,line-endings,Python,Python 2.x,Line Endings,我搜索了一下堆栈溢出,发现了不同的答案,但没有适合我的情况 我得到的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如果你认为这解决了你的问题,那么请勾选此答案旁边的接受标记;)完成!对不起,我还是新来的堆栈溢出。“我怎样才能赢得声誉呢?”阿列克谢说