如何在python中拆分文件
Posted
技术标签:
【中文标题】如何在python中拆分文件【英文标题】:How to split a file in python 【发布时间】:2016-09-23 13:31:06 【问题描述】:我正在尝试拆分 2 个列表,比较它们并创建一个新列表,但没有成功比较 2 个列表中的项目。
所以说 List_1.txt =
Failed = abc
Failed = hfi
Failed = kdi
和 List_2.txt =
1:1:1 - jdsfjdf
2:2:2 - iidf
3:3:3 - abc
6:3:1 - hfi
8:2:1 - kdi
3:1:5 - dua
3:1:2 - dfh
我想比较这些列表并创建一个没有 list_1 条目的 new_list2。
我尝试的是:
treinrit = open('List_1', 'r')
lijna = treinrit.readlines()
treinrit.close()
annuleer_treinrit = open('List_2', 'r')
lijnb = annuleer_treinrit.readline()
annuleer_treinrit.close()
lijsta = []
lijstb = []
for a in lijna:
clean = a.split(' - ')
print(lijsta)
for b in lijnb:
lijstb.append(lijnb.split(": "))
我只是无法正确拆分列表。我只需要比较每个文件的最后一位,但我不知道如何。
【问题讨论】:
您是否在 SO 上查看过此页面:***.com/questions/546508/… 希望对您有所帮助 你能展示你想要的最终结果吗? @Hoopdady list_2 没有 abc、hfi 和 kdi。 没有整行还是没有那些字符串?就像3:3:3 - abc
一样,您会删除整行,还是只删除abc
,这样该行就会显示为3:3:3 -
?
【参考方案1】:
类似的东西
bad_stuff = []
with open('List_1', 'r') as fn:
for line in fn:
bad_stuff.append(line.split('=')[1].strip())
with open('List_2', 'r') as fn:
for line in fn:
if line.split(':')[1].strip() not in bad_stuff:
print(line)
bad_stuff
列表将包含=
符号后第一个文件中的所有元素(如abc
、hfi
和kdi
)
然后检查第二个文件,只有:
符号后面的部分不在bad_stuff
列表中时才打印
【讨论】:
谢谢你,这对我帮助很大。 [1].strip 到底是做什么的?strip()
删除前导和尾随空格和换行符。有像rstrip()
这样的命令,它删除了'right',所以尾随空格和换行符(你可以猜到还有 lstrip())。
啊 tahnks 很多!和[1]?是加空格还是什么的?
[1]
是一个索引。当您在字符串上调用split()
时,它会拆分字符串,并将其放入list
在我们的例子中,列表将有两个元素,我们只需要第二个元素。在大多数编程语言中,列表索引从 0 开始编号。所以list[0]
会给你第一个元素,list[1]
会给你第二个【参考方案2】:
with open('File1', 'r') as f1:
f1_stored = []
for line in f1:
f1_stored.append(line.split('=')[1].strip())
with open('File2', 'r') as f2;
output = []
for line in f2:
if not any(failed in line for failed in f1_stored):
output.append(line)
用output
做你想做的事
【讨论】:
以上是关于如何在python中拆分文件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 python zipfile 库检查 zip 文件是不是在多个档案中拆分?
如何在 Python 中使用管道分隔符拆分文本文件,然后使列数等于属性值的数量?