我有一个名为 的函数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]
对于非常大的文件,这可能比将整个文件读入内存然后解析它更有效。内存中不需要文件的两个副本(一个有换行符,一个没有)。
哈士奇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]
拉莫斯之舞
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
添加回答
举报
0/150
提交
取消