Python列表解析

问题描述:

可能是一个简单的问题,但我是Python的新手。我有一个包含电子邮件地址的文件,每行一个。我想读取文件并将它们附加在一起,用逗号分隔。是否有更多pythonic这样做?Python列表解析

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

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

你可以做到以下几点:

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

哎呀,谢谢 - 修正现在 –

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

保持简单。

如何:

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

可以使用join方法连接起来的一组字符串。

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

一切都在一人打出

",".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