2011-09-27 65 views
2

可能是一個簡單的問題,但我是Python的新手。我有一個包含電子郵件地址的文件,每行一個。我想讀取文件並將它們附加在一起,用逗號分隔。是否有更多pythonic這樣做?Python列表解析

def getEmailList(file_name): 
    f = open(file_name, 'r') 
    emailstr = '' 
    for line in f: 
     emailstr += line.rstrip() + ',' 
    f.close() 
    return emailstr 

回答

2
','.join(line.rstrip() for line in f) 
7

你可以做到以下幾點:

def getEmailList(file_name): 
    with open(file_name) as f: 
     return ",".join(x.rstrip() for x in f) 

該版本的主要特點是:

def getEmaulList(file_name): 
    with open(file_name, "r") as f: 
     data = f.read() 
     emails = ",".join(data.split("\n")) 
     return emails 
之間
+0

哎呀,謝謝 - 修正現在 –

0
def getEmailList(file_name): 
    with open(file_name, 'r') as f: 
     result = ", ".join(addr.rstrip() for addr in f) 
    return result 
0

如何:

with open(file_name, 'r') as f: 
    emailstr = ','.join(line.rstrip() for line in f) 
0

可以使用join方法連接起來的一組字符串。

def getEmailList(file_name): 
    with open(file_name, 'r') as f: 
     return ','.join([line.rstrip() for line in f]) 
0

一切都在一人打出

",".join([x.replace('\n','') for x in open("yourFile.txt").readlines()]) 
+0

我愛的一次性交易。但我在這裏的幫助中感到不知所措。謝謝。我非常瞭解正則表達式,但不是在這種情況下。如果文件中的電子郵件地址用'#'註釋掉了,我怎麼能過濾掉這些? – EdgeCase

+0

用'「,」。join([x.replace('\ n','')for x in open 「yourFile.txt」)。readlines()if x.startswith('#')])' – glglgl

+0

這裏的問題是你不關閉文件,你依賴Python來自動關閉文件,已經完成了,一些實現會這樣做,而其他實現可能需要一些時間來解決它,這可能會導致煩人的難以發現的錯誤。總是完成時關閉文件。 – Duncan