在python中,如何在字符串的第n个分隔符中添加新行?

2024-06-16 10:35:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图为字符串中的每N个分隔符添加一行新行

例如,我将每隔三个“|”在下面的字符串中添加一行新行:

nthelement = 3
delimiter = '|'
string = 'AB|CD|EEEE|GGg|gger342|gff534|gre343|FGS'
#splitter here
output = 'AB|CD|EEEE|\nGGg|gger342|gff534|\ngre343|FGS'

Tags: 字符串stringhereabcddelimiter分隔符splitter
2条回答

这里是一个实现

def delimit(s, delimiter, n): 
    segments = s.split(delimiter) # splits string by delimiter
    for i, seg in enumerate(segments): 
        if i % n == 0 and i != 0: 
            segments[i] = '\n' + seg # prepend '\n' to segment
    return delimiter.join(segments) # join segments

用法:

delimit('AB|CD|EEEE|GGg|gger342|gff534|gre343|FGS', '|', 3)
# output: 'AB|CD|EEEE|\nGGg|gger342|gff534|\ngre343|FGS'

找到了一些解决方案,但这是迄今为止我提出的最干净的解决方案:

items = string.split(delimiter)
groups = []


while items:
    first_three, items = items[:nthelement], items[nthelement:]
    groups.append(first_three)


result = "|\n".join("|".join(g) for g in groups)

输出:

>>> result
'AB|CD|EEEE|\nGGg|gger342|gff534|\ngre343|FGS'

相关问题 更多 >