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

26

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

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个回答

36

这基本上就是 readlines 的工作方式。您可以进行后处理:

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

但是如果我不想要EOL字符,我更喜欢根本不使用readlines,而是执行以下操作:

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

或者更好的是:

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

(这里几乎肯定不会有任何影响,但使用上下文管理器来明确关闭文件对象是一个很好的习惯)


但是read()会一直读取直到文件结束,而readline()则会读取直到遇到\r\n。 - iperov

14

readlines()除非你确定文件真的很小,否则不应使用。对于您的应用程序,最好使用rstrip()

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

13
你可以在replace命令中用空字符串替换\r\n
stocks = [x.replace("\r\n","") for x in stocks]

1
你可以这样做:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接