使用Python我需要每64个字符在字符串中插入换行符.在Perl中很简单:
s/(.{64})/$1\n/
Run Code Online (Sandbox Code Playgroud)
如何使用Python中的正则表达式来完成?有更多的pythonic方式吗?
And*_*Dog 30
与Perl相同,但使用反斜杠而不是美元来访问组:
s = "0123456789"*100 # test string
import re
print re.sub("(.{64})", "\\1\n", s, 0, re.DOTALL)
Run Code Online (Sandbox Code Playgroud)
re.DOTALL相当于Perl的s/选择.
gur*_*lex 24
没有正则表达式:
def insert_newlines(string, every=64):
lines = []
for i in xrange(0, len(string), every):
lines.append(string[i:i+every])
return '\n'.join(lines)
Run Code Online (Sandbox Code Playgroud)
更短但可读性更低(imo):
def insert_newlines(string, every=64):
return '\n'.join(string[i:i+every] for i in xrange(0, len(string), every))
Run Code Online (Sandbox Code Playgroud)
上面的代码适用于Python 2.x. 对于Python 3.x,您想要使用range而不是xrange:
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))
Run Code Online (Sandbox Code Playgroud)
jfs*_*jfs 14
我会去:
import textwrap
s = "0123456789"*100
print '\n'.join(textwrap.wrap(s, 64))
Run Code Online (Sandbox Code Playgroud)
将@JF塞巴斯蒂安的解决方案更进一步,这几乎是犯罪的:-)
import textwrap
s = "0123456789"*100
print textwrap.fill(s, 64)
Run Code Online (Sandbox Code Playgroud)
看看马......没有正则表达!因为你知道... http://regex.info/blog/2006-09-15/247
感谢您向我们介绍textwrap模块...虽然它自2.3以来一直在Python中,但我从未意识到它(是的,我会公开承认)!
小,不好:
"".join(s[i:i+64] + "\n" for i in xrange(0,len(s),64))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31779 次 |
| 最近记录: |