从python文件的列表中删除元素
我有以下清单:从python文件的列表中删除元素,python,Python,我有以下清单: array = ['info@aireconsultores.es','integralfitstore@gmail.com','info@jamonesdeseroncheca.com'] 然后我有一个包含以下内容的文本文件: info@aireconsultores.es integralfitstore@gmail.com info@jamonesdeseroncheca.com ertsol1@lubrial2000.com contact@ytcvn.com info
array = ['info@aireconsultores.es','integralfitstore@gmail.com','info@jamonesdeseroncheca.com']
然后我有一个包含以下内容的文本文件:
info@aireconsultores.es
integralfitstore@gmail.com
info@jamonesdeseroncheca.com
ertsol1@lubrial2000.com
contact@ytcvn.com
info@centroro.es
如何从列表中删除文本文件中的元素,即,使文件看起来如下所示:
ertsol1@lubrial2000.com
contact@ytcvn.com
info@centroro.es
with open('file.txt') as in_file, open('out.txt', 'w') as out_file:
for line in in_file:
if line.strip() not in array:
out_file.write(line)
def func(emails_to_exclude):
with open('test.txt') as fr, open('test_2.txt', 'w') as fw:
for line in fr:
line = line.strip()
if len(line) > 0:
if line not in emails_to_exclude:
fw.write('{}\n'.format(line))
if __name__ == '__main__':
data = [
'info@aireconsultores.es',
'integralfitstore@gmail.com',
'info@jamonesdeseroncheca.com',
]
func(data)
我不会删除行,而是创建一个新文件,删除条目,如下所示:
ertsol1@lubrial2000.com
contact@ytcvn.com
info@centroro.es
with open('file.txt') as in_file, open('out.txt', 'w') as out_file:
for line in in_file:
if line.strip() not in array:
out_file.write(line)
def func(emails_to_exclude):
with open('test.txt') as fr, open('test_2.txt', 'w') as fw:
for line in fr:
line = line.strip()
if len(line) > 0:
if line not in emails_to_exclude:
fw.write('{}\n'.format(line))
if __name__ == '__main__':
data = [
'info@aireconsultores.es',
'integralfitstore@gmail.com',
'info@jamonesdeseroncheca.com',
]
func(data)
也许是这样:
ertsol1@lubrial2000.com
contact@ytcvn.com
info@centroro.es
with open('file.txt') as in_file, open('out.txt', 'w') as out_file:
for line in in_file:
if line.strip() not in array:
out_file.write(line)
def func(emails_to_exclude):
with open('test.txt') as fr, open('test_2.txt', 'w') as fw:
for line in fr:
line = line.strip()
if len(line) > 0:
if line not in emails_to_exclude:
fw.write('{}\n'.format(line))
if __name__ == '__main__':
data = [
'info@aireconsultores.es',
'integralfitstore@gmail.com',
'info@jamonesdeseroncheca.com',
]
func(data)
您可以将一个数组转换为一个集合,我们称之为s1,也可以将源文件中的数据读取为一个集合,我们称之为s2。这些集合之间的差异是期望的结果,即结果=s2。差异s1
array = ['info@aireconsultores.es', 'integralfitstore@gmail.com', 'info@jamonesdeseroncheca.com']
with open('data.txt', 'r') as src:
src_data = set(map(str.strip, src.readlines()))
with open('out.txt', 'w') as dst:
dst.write("\n".join(src_data.difference(set(array))))
你说你在一个列表中有六封电子邮件,在一个名为array的列表中有三封你想排除的电子邮件。您可以使用numpy排除这三封电子邮件:
import numpy as np
my_list = np.array(["info@aireconsultores.es","integralfitstore@gmail.com","info@jamonesdeseroncheca.com","ertsol1@lubrial2000.com","contact@ytcvn.com","info@centroro.es"])
my_array = ['info@aireconsultores.es','integralfitstore@gmail.com','info@jamonesdeseroncheca.com']
my_list[~np.isin(my_list, my_array)]
但是,如果您有一个.txt文件中包含六封电子邮件的列表,那么我建议您将该文件作为pandas数据帧读取,然后将名为array的列表中的邮件排除在外:
你的描述有点混乱。您是从列表中还是从文件中删除字符串?无论哪种情况,我都建议将文本文件加载到列表中。然后您可以比较和/或迭代两个列表。如果需要新文件,请将适当的列表写入文件。为什么从列表中删除项目会使文件看起来有所不同?