猿问

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

我有一个名为 的函数read_proxy,我想阅读文本的每一行:


def read_proxy():

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

    proxies = f.readlines()

    f.close()

    return proxies


if __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出来。


慕神8447489
浏览 123回答 3
3回答

MMTTMM

我不确定为什么 Python 决定这样做,但是遍历一个文件会返回它的行。所以你也可以这样写:with open('./proxy.txt', 'r') as file:     return [line.rstrip('\n') for line in file]对于非常大的文件,这可能比将整个文件读入内存然后解析它更有效。内存中不需要文件的两个副本(一个有换行符,一个没有)。

哈士奇WWW

def read_proxy_without_newlines():    f = open('./proxy.txt', 'r')    proxies = f.readlines()    f.close()    return [p.rstrip('\n') for p in proxies]

拉莫斯之舞

而不是使用.readlines(), 将每一行分别读入列表并保留\n在末尾,您可以尝试使用.read()一次获取整个文件,然后使用str.split()将其变成行列表,但这次删除换行符:def read_proxy():    f = open('./proxy.txt', 'r')    proxies = f.read().split('\n')    f.close()    return proxies
随时随地看视频慕课网APP

相关分类

Python
我要回答