使用readlines导入后从Python列表中删除\ r \ n

时间:2014-07-25 01:30:35

标签: python readlines

我已将一个股票代码符号列表保存到文本文件中,如下所示:

MMM
ABT
ABBV
ANF
....

然后我使用readlines将符号放入Python列表中:

stocks = open(textfile).readlines()

然而,当我查看其中的列表时,它包含我不想要的Windows行尾分隔符:

list: ['MMM\r\n', 'ABT\r\n', 'ABBV\r\n', 'ANF\r\n', 'ACE\r\n', 'ACN\r\n', 'ACT\r\n', 'ADBE\r\n', 'ADT\r\n', 'AMD\r\n', 'AES\r\n', .....

有人可以建议删除这些不需要的字符的最简单方法吗?

4 个答案:

答案 0 :(得分:23)

这基本上是readlines的工作原理。你可以对它进行后处理:

stocks = [x.rstrip() for x in stocks]

但如果我不想要EOL字符,我宁愿不使用readlines,而是:

stocks = open(textfile).read().splitlines()

甚至更好:

with open(textfile) as f:
    stocks = f.read().splitlines()

(这几乎肯定不会有所作为,但使用上下文管理器显式关闭文件对象是一个很好的习惯)

答案 1 :(得分:10)

除非您知道文件非常小,否则永远不要使用

readlines()。对于您的应用程序,最好使用rstrip()

with open(filename, 'r') as f:
    for l in f:
        l = l.rstrip()
        # other operations. 

答案 2 :(得分:7)

您可以使用\r\n命令中的空字符串替换replace

stocks = [x.replace("\r\n","") for x in stocks]

答案 3 :(得分:0)

你可以这样做:

stocks = open(textfile).read().splitlines()