我查了切片文档,仍然没有找到我需要的东西。我是初学者。
我有一个很大的文本文件。我想使用文档中重复的相同行来切割该文件。取这些行中的2行并将其保存在一个数字文件中)
我想我可以让我的循环保存工作,但我不知道如何切片文档。
类似的东西:
for i in xrange(n):
f = open("patent.data_"+str(i)+".dat","w")
我认为当我提取文件的部分时,我只是让计数器运行它(n)。
有人可以向我提供帮助或链接,以便我能解决这个问题吗?
祝福
PS:这是我更新的非工作解决方案:
f = open(PATENTS, 'r')
text =f.read()
text.split("\n "<?xml version="1.0" encoding="UTF-8"?>"\n")
好的,我尝试使用.splitlines,我认为我更接近于将文本分成我想要的块的工作解决方案。这是我到目前为止所做的工作:
f = open(PATENTS, 'r')
text =f.read()
n=0
counter=0
textblock=[]
stext= text.splitlines()
for lines in stext:
if stext[n]!='<?xml version="1.0" encoding="UTF-8"?>':
textblock.append(stext[n])
else:
counter+=1
n+=1
print counter
print textblock
f.close()
计数器给出了我想要的正确数量的文本块,if语句也可以。遗憾的是,不起作用的是索引变量textblock。我想到了类似的东西:
textblock[counter]
但是这给了我一个错误“列表索引超出范围”
确定切换到这样的元组列表:但现在不知道如何访问列表中的元组值:(
for lines in stext:
if stext[n]!='<?xml version="1.0" encoding="UTF-8"?>':
textblock.append((counter,stext[n]))
else:
counter+=1
n+=1
print counter
答案 0 :(得分:0)
你想要的python术语是&#34;分裂&#34;而不是切片。由于您的拆分模式是整行,因此将整个文件读入一个字符串并将其拆分为一个块列表,如下所示:
fp = open("pattern_data.txt")
text = fp.read()
fp.close()
parts = text.split('\n<?xml version="1.0" encoding="UTF-8"?>\n')
parts
现在是您的文件块列表。
请注意,split()
会从结果中删除拆分文本;这应该没问题,因为你知道它在哪里。此外,我写它的方式切割线必须完全包含拆分模式,没有别的(如果行末有额外的空格,则删除换行符\n
,或者如果这不起作用)。如果您需要的分割模式可能会有所不同,请使用re.split
分割正则表达式而不是固定字符串。
答案 1 :(得分:0)
试试这个
from itertools import count
c = count(1)
with open("mainfile.txt") as f:
temp = []
filenum = next(c)
for i in f:
if i in temp:
temp = []
filenum = next(c)
temp.append(i)
with open("patent.data_"+str(filenum)+".dat","a") as f1:
f1.write(str(i))