如何将\ n切换到列表中的换行符?

时间:2018-09-30 08:47:09

标签: python python-3.x

    with open("C:\\test\\data1.txt") as f:
    data = f.readlines()
    tail = data[-10:]

我在文件夹test中有一个文件名data1.txt,当我的程序从文件中读取文件时,它将从文件中读取全部内容,并且仅打印文件中的最后10行。

  

['这是第21 \ n行,'这是第22 \ n行,'这是第行   数字23 \ n',“这是行号24 \ n”,“这是行号25 \ n”,   “这是行号26 \ n”,“这是行号27 \ n”,“这是行   数字28 \ n','这是第29行\ n','这是第30行\ n']

我想用换行符打印文件中的最后10行,但无法说明如何将换行符放入列表数据结构中。

例如: 要像这样打印txt文件(data1.txt):

这是第21行

这是第22行

这是第23行

这是第24行

没有\ n和列表减速度([''])

4 个答案:

答案 0 :(得分:2)

已经有很多答案,但是没有人解释这个问题。

问题

\n 是换行符!

说明

为了能够在字符串文字中显示换行符,使用了转义序列\n,例如:

>>> 'a\nb'
'a\nb'

>>> print('a\nb')
a
b

print函数会打印字符串,如果将字符串参数传递给它,但是如果将其他对象传递给字符串,则必须首先将其转换为字符串,因此print(x)是字符串与print(str(x))相同。

list的字符串转换为字符串时,可以通过在其每个项目上调用repr来完成:

>>> ['a', 'a\nb']
['a', 'a\nb']

>>> str(['a', 'a\nb'])
"['a', 'a\\nb']"

>>> print("['a', 'a\\nb']")
['a', 'a\nb']

解决方案

现在,如果要打印最后10行,则意味着您应该打印列表中的每个字符串,而不是列表对象本身,例如:

for s in list_of_strings:
    print(s)

现在,由于s已经包含换行符,并且print本身也添加了换行符,因此您应该删除其中一个换行符以使解决方案完整:

for s in list_of_strings:
    print(s.strip('\n'))

或:

for s in list_of_strings:
    print(s, end='')

或通过串联列表项来创建一个字符串并打印:

print(''.join(list_of_strings))

答案 1 :(得分:1)

print的尾巴像这样:

print(*tail, sep='')

sep参数停止自动空间,该空间通常用作打印项目之间的分隔符。

答案 2 :(得分:1)

最好是一个联接(适用于任何版本)

print(''.join(tail))

答案 3 :(得分:0)

也许这会有所帮助:

f.readlines()[-10:]

这样,您将获得最后10行。

或者只是:

data = f.readlines()[-10:]
for d in data:
   print(d) # will print everything on new line