gpt4 book ai didi

python - 以逗号分隔的字符串对值进行分组

转载 作者:太空宇宙 更新时间:2023-11-04 09:45:38 26 4
gpt4 key购买 nike

我有以下字符串:

"paid,paid,paid,paid,unpaid,paid,paid,paid,paid,unpaid,unpaid,unpaid,paid,paid,Pinterest,unpaid,Pinterest,unpaid,unpaid"

我想把它变成这样:

"paid x4, unpaid x1, paid x4, unpaid x3, paid x2, Pinterest x1, unpaid x1, Pinterest x1, unpaid x2"

基本上,如果下一个项目与前一个项目相同,我想将这些项目组合在一起,并计算这成立的次数。所以在这个例子中,连续四个未支付的变成 paid x4 然后连续一个未支付的变成 unpaid x1 然后连续四个支付的变成 unpaid x4,依此类推。

我编写了以下函数,我认为它可以完成我想要的。有没有更 pythonic/更有效的方法来做到这一点?

counter = 1
split_string = string_test.split(',')
len_string = len(split_string)
new_string = ''
for num, string in enumerate(split_string):
# Edge case: last string in list
if len_string == num + 1:
if split_string[num] == split_string[num-1]:
new_string += split_string[num] + ' x' + str(counter)
#print("new string:", new_string)
else:
new_string += split_string[num] + ' x1 '
break

else:
if split_string[num] == split_string[num+1]:
counter += 1
#print("string match")
else:
new_string += split_string[num] + ' x' + str(counter) + ', '
#print("new string:", new_string)
counter = 1
print(new_string)

最佳答案

您可以使用 itertools.groupby 在一行(不太复杂)中完成此操作。

>>> from itertools import groupby
>>> ', '.join(['{} x{}'.format(w, len(list(ws))) for w, ws in groupby(string_test.split(','))])
'paid x4, unpaid x1, paid x4, unpaid x3, paid x2, Pinterest x1, unpaid x1, Pinterest x1, unpaid x2'

使用 Python 3.6 中引入的 f 字符串可以说更简洁一些,如果你可以使用的话:

>>> ', '.join([f'{w} x{len(list(ws))}' for w, ws in groupby(string_test.split(','))])

关于python - 以逗号分隔的字符串对值进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49931629/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com