1

这是一个例子。

该文件有一个字符串:4;4;4;8;4;4;4;9;9;4;4 .

我希望它输出:

4;4;4
8
4;4;4
9
9
4;4 

在此示例中,确定何时拼接的限制将是大于 4 的任何数字。我已尝试查看 python 库和其他问题。我的猜测涉及以下内容:

listA = [] 
listB = []
for i in line:
    listA.append(i)

for item in listA:
    if int(item) > 4:
         listB.append(item)
    else:
         item = item

print(listA)
print(listB)

有没有更高效、更快捷的方法?我确信有,但我在 python 方面没有那么经验丰富,希望能得到帮助!

4

1 回答 1

1

使用itertools.groupby

from itertools import groupby

for key, group in groupby(line.split(';'), key=lambda i: int(i) > 4):
    if key:
        for i in group:
            print(i)
    else:
        print(';'.join(group))

演示:

>>> for key, group in groupby(line.split(';'), key=lambda i: int(i) > 4):
...     if key:
...         for i in group:
...             print(i)
...     else:
...         print(';'.join(group))
... 
4;4;4
8
4;4;4
9
9
4;4

groupby实用功能通过键对序列进行分组;这里的值是否大于 4;每次迭代都会给我们一个值序列,如果当前组的值确实更大,我们将它们打印在单独的行上,否则它们会再次用分号连接成一个字符串。

于 2013-07-05T22:09:05.087 回答