输入文件是连续的,我想用新行分割第n个分隔符。
我尝试了以下内容:
with open ("ip.txt") as f:
for line in f:
A = line.split("Ç")
B= ['Ç'.join(x) for x in [A[i:i + 10] for i in xrange(0, len(A), 10)]]
with open ("op.txt","w") as outfile:
outfile.write("Ç\n".join(s))
我得到了内存错误。
我该如何避免它?
答案 0 :(得分:0)
根据评论中的说明做出新答案:
def split(text, separator, each):
if each < 1:
raise AttributeError('each must be >= 1')
parts = text.split(separator)
if len(parts) <= each:
return [text]
lines = []
for idx in range(0, len(parts), each):
segment = separator.join(parts[idx:idx + each])
if idx + each < len(parts):
segment = '%s%s' % (segment, separator)
lines.append(segment)
return '\n'.join(lines)
print(split('1¢2¢3¢4¢5¢6¢7¢8¢9¢10¢11¢12¢13¢14¢15¢16¢17¢18¢19¢20¢21¢22', '¢', 10))
哪个输出:
1¢2¢3¢4¢5¢6¢7¢8¢9¢10¢
11¢12¢13¢14¢15¢16¢17¢18¢19¢20¢
21¢22
旧回答:
我确实不确定你想要的确切结果,所以我要给出一个返回两个项目列表的代码片段:首先是分割前的字符串部分,其次是后面的字符串部分分裂。如果您想要稍微不同的结果,可以轻松更改此内容。
def split(text, separator, position):
if position < 1:
raise AttributeError('position must be >= 1')
parts = text.split(separator)
if len(parts) <= position:
return [text]
return [separator.join(parts[:position]), separator.join(parts[position:])]
这里有一些例子:
>>> split('part0&part1&part2', '&', 1)
['part0', 'part1&part2']
>>> split('part0&part1&part2', '&', 2)
['part0&part1', 'part2']
>>> split('part0&part1&part2', '&', 3)
['part0&part1&part2']
>>> split('part0&part1&part2', '&', 0)
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/Users/paco/Desktop/so/main.py", line 3, in split
raise AttributeError('position must be >= 1')
AttributeError: position must be >= 1