为了账号安全,请及时绑定邮箱和手机立即绑定

没有 \n 有什么方便的方法来读取行吗?

没有 \n 有什么方便的方法来读取行吗?

慕神8447489 2023-06-20 14:07:55
我有一个名为 的函数read_proxy,我想阅读文本的每一行:def read_proxy():    f = open('./proxy.txt', 'r')    proxies = f.readlines()    f.close()    return proxiesif __name__ == '__main__':    proxies = read_proxy()    print(proxies)  # ['a\n', 'sad\n', 'asdasd\n', 'asdas\n', '1223\n', '43\n', '4576\n', '789\n', '90900-\n']    您会看到列表项,每个项的\n末尾都有一个。怎么写read_proxy(),让我实现得到每行字符串不带\n?在我的选择中,我只能 forloop 每个项目然后剥离\n出来。
查看完整描述

3 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

我不确定为什么 Python 决定这样做,但是遍历一个文件会返回它的行。所以你也可以这样写:

with open('./proxy.txt', 'r') as file:
    return [line.rstrip('\n') for line in file]

对于非常大的文件,这可能比将整个文件读入内存然后解析它更有效。内存中不需要文件的两个副本(一个有换行符,一个没有)。


查看完整回答
反对 回复 2023-06-20
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

def read_proxy_without_newlines():

    f = open('./proxy.txt', 'r')

    proxies = f.readlines()

    f.close()

    return [p.rstrip('\n') for p in proxies]


查看完整回答
反对 回复 2023-06-20
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

而不是使用.readlines(), 将每一行分别读入列表并保留\n在末尾,您可以尝试使用.read()一次获取整个文件,然后使用str.split()将其变成行列表,但这次删除换行符:


def read_proxy():

    f = open('./proxy.txt', 'r')

    proxies = f.read().split('\n')

    f.close()

    return proxies


查看完整回答
反对 回复 2023-06-20
  • 3 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信