使用Python每64个字符插入一个换行符

35 投票
7 回答
56100 浏览
提问于 2025-04-15 21:43

我想用Python在一个字符串每64个字符后插入一个换行符。在Perl里,这个操作很简单:

s/(.{64})/$1\n/

那么在Python中,怎么用正则表达式来实现呢?有没有更符合Python风格的方法呢?

7 个回答

21

我会选择:

import textwrap
s = "0123456789"*100
print('\n'.join(textwrap.wrap(s, 64)))
37

没有使用正则表达式:

def insert_newlines(string, every=64):
    lines = []
    for i in range(0, len(string), every):
        lines.append(string[i:i+every])
    return '\n'.join(lines)

这个写法更简短,但我觉得不太容易读懂:

def insert_newlines(string, every=64):
    return '\n'.join(string[i:i+every] for i in range(0, len(string), every))

(对于Python 2,使用 xrange 替代 range。)

39

和Perl一样,不过用反斜杠代替美元符号来访问分组:

s = "0123456789"*100 # test string
import re
print re.sub("(.{64})", "\\1\n", s, 0, re.DOTALL)

re.DOTALL 相当于Perl中的 s/ 选项。

撰写回答