删除每个字符串后出现的空白行

时间:2018-11-21 23:34:33

标签: python random

该程序运行正常,但是在每个玩家之后我都无法删除空白行。我尝试使用.strip,但收到错误'list' object has no attribute 'strip'

import random

def random_player(datafile):
    with open (datafile, 'r') as read_file:
        the_line = read_file.readlines()
        print(random.choice(the_line))

random_player(file_name)
random_player(file_name)
random_player(file_name)
random_player(file_name)
random_player(file_name)

我得到的是

Toney Douglas

Adonal Foyle

Nate Hawthorne

Joe Stephens

Gary Payton II

我想要什么:

Toney Douglas
Adonal Foyle
Nate Hawthorne
Joe Stephens
Gary Payton II

2 个答案:

答案 0 :(得分:5)

您在read_file中的行包含换行符,然后print默认添加另一行。您可以使用print(random.choice(the_line), end='')避免第二个换行符。

其他评论:

  • read_file.close什么也不做,因为您忘记了调用该方法。
  • 此外,即使执行read_file.close()也没有意义,因为使用with语句已经可以关闭文件了。
  • the_line是一个令人困惑的变量名,因为它有很多行。
  • 您可能应该将文件读入内存一次(似乎并不大),而不是每次调用random_player时都打开并读取它。

答案 1 :(得分:1)

timgeb 的答案是一种解决方法,您也可以尝试在行尾修剪掉换行符。

print(random.choice(the_line).strip('\n'))