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

Posted

技术标签:

【中文标题】使用 readlines 导入后从 Python 列表中删除 \\r\\n【英文标题】:Removing \r\n from a Python list after importing with readlines使用 readlines 导入后从 Python 列表中删除 \r\n 【发布时间】:2014-09-16 18:31:12 【问题描述】:

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

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', .....

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

【问题讨论】:

【参考方案1】:

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() 会一直读取到 EOF。 readline() 读取到 \r\n【参考方案2】:

readlines() 不应该被使用,除非你知道文件非常小。对于您的应用程序,最好使用rstrip()

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

【讨论】:

【参考方案3】:

您可以在replace 命令中将\r\n 替换为空字符串。

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

【讨论】:

【参考方案4】:

你可以这样做:

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

【讨论】:

以上是关于使用 readlines 导入后从 Python 列表中删除 \r\n的主要内容,如果未能解决你的问题,请参考以下文章

如果使用颜色提示,如何修复 Python readline 中的列计算

混合编译后从模块导入时出现问题

python readline模块不适用于Windows?

python如何导入excel文件数据

IntelliJ - 首次运行后从旧版本导入配置

python进行爬虫+数据处理+导入Mysql