我有一个文本文件。我想逐行读取文件,使用分隔符分割,并在每个n
分隔符之间创建元组。示例是:
"A-B-C-D
E-F-G
Thank You!
For Helping
Stranger-seeker "
以上行的输出将如下所示:
(A,B,C,D)
(E,F,G\n\nThank You!\n\nFor Helping\n\nStranger,seeker)
如果能在Python解决方案方面为我提供帮助,我将不胜感激。
答案 0 :(得分:0)
在itertools中有一个grouper
的配方。您可以使用它将列表分组为固定长度的块
>>> from itertools import zip_longest
>>> def grouper(iterable, n, fillvalue=None):
... "Collect data into fixed-length chunks or blocks"
... # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx"
... args = [iter(iterable)] * n
... return zip_longest(*args, fillvalue=fillvalue)
...
>>> data = open('tmp.txt').read().split('-')
>>> list(grouper(data, 4))
[('A', 'B', 'C', 'D\nE'), ('F', 'G\nThank You!\nFor Helping\nStranger', 'seeker\n', None)]
答案 1 :(得分:0)
您可以拆分输入字符串,然后在列表的滚动切片上使用列表理解:
s = '''A-B-C-D
E-F-G
Thank You!
For Helping
Stranger-seeker'''
l = s.split('-')
print([l[i:i+3] for i in range(0, len(l), 3)])
这将输出:
[['A', 'B', 'C'], ['D\n\nE', 'F', 'G\n\nThank You!\n\nFor Helping\n\nStranger'], ['seeker']]
答案 2 :(得分:0)
我的解决方案是一次读取整个文件。请帮我改进它。
以open(filename)作为fp:
data = fp.read()
my_values = data.split('-')
my_data = []
count = 0
rem_values = []
delimiter_count = len(my_values) - 1
for x in range(len(my_values)):
count += 1
if count == 4:
split_val = my_values[x].split("\n")
if len(split_val) == 2:
count = 1
my_data.append(split_val[0] )
rem_values.append(my_data )
my_data = [ split_val[1] ]
else:
count = 1
my_data.append(split_val[0] )
rem_values.append(my_data )
else:
my_data.append( my_values[x] )
打印(rem_values)