【发布时间】:2019-04-09 09:13:21
【问题描述】:
有人能指出我正确的方向吗..
我有一个包含单词句子的字符串 例如'他试图学习一种 Python 或正则表达式来解决他的问题'
有问题的字符串很大,我需要把它分成多行,每行不能超过 64 个字符。 但我不能每 64 个字符插入一个换行符。我需要确保中断发生在第 64 个字符之前的最近字符(来自一组字符),以确保该行不超过 64 个字符。 例如我只能在空格、逗号或句号后插入换行符
我还需要非常有效的解决方案,因为它是一个会发生很多次的动作。
使用文本换行
我不确定 textwrap 是否可以解决我的问题,因为我需要保留输入字符串中的原始换行符。 示例:
long_str = """
123456789 123456789 123456789 123456789 123456789 123456789
Line 1: Artificial intelligence (AI), sometimes called machine intelligence,
Line 2: is intelligence demonstrated by machines,
Line 3: in contrast to the natural intelligence displayed by humans and other animals.
Line 4: In computer science AI research is defined as
"""
lines = textwrap.wrap(long_str, 60, break_long_words=False)
print('\n'.join(lines))
我想要的是这个:
123456789 123456789 123456789 123456789 123456789 123456789 第 1 行:人工智能 (AI),有时也称为 机器智能, 第 2 行:是机器展示的智能, 第 3 行:与显示的自然智能对比 由人类和其他动物。 第 4 行:在计算机科学中,人工智能研究被定义为
但是 textwrap 给了我这个:
123456789 123456789 123456789 123456789 123456789 123456789 第 1 行:人工智能 (AI),有时也称为 机器智能,第 2 行:智能被证明 通过机器,第 3 行:与自然形成对比 人类和其他动物显示的智力。第 4 行: 在计算机科学中,人工智能研究被定义为
我怀疑正则表达式可能是答案,但我无法用正则表达式解决这个问题。
【问题讨论】:
-
我看了这个,这几乎是我所追求的,但它似乎并没有保留现有的换行符。我只需要换行超过 64 个字符的行/句子,并且我需要保留字符串其余部分的格式
-
为了一个简单的解决方案,将它分成几行并在它们上调用 textwrap。
标签: python regex string python-3.x