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)
该版本的主要特点是:
- 使用
with
statement,以便该文件将自动关闭,当控制叶该块。 - 使用
list comprehensiongenerator expressionx.rstrip() for x in f
剥去每条线由于agf为该校正 - 使用
str.join
把一个 '' 每一个项目的序列中
def getEmaulList(file_name):
with open(file_name, "r") as f:
data = f.read()
emails = ",".join(data.split("\n"))
return emails
之间
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()])
我爱的一次性交易。但我在这里的帮助中感到不知所措。谢谢。我非常了解正则表达式,但不是在这种情况下。如果文件中的电子邮件地址用'#'注释掉了,我怎么能过滤掉这些? – EdgeCase
用'“,”。join([x.replace('\ n','')for x in open “yourFile.txt”)。readlines()if x.startswith('#')])' – glglgl
这里的问题是你不关闭文件,你依赖Python来自动关闭文件,已经完成了,一些实现会这样做,而其他实现可能需要一些时间来解决它,这可能会导致烦人的难以发现的错误。总是完成时关闭文件。 – Duncan
哎呀,谢谢 - 修正现在 –