我有一個名為 的函數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
提交
取消