Python:如何只提取x个字符组成的字符块中的完整单词?

Python:如何只提取x个字符组成的字符块中的完整单词?,python,string,loops,Python,String,Loops,以字符串为例 s=“你永远不会知道真相” 如果我想把这个字符串分成15个字符(s[:15]),我会得到“你永远不会知道” 我想用这个新字符串做的只是提取完整的单词(在本例中为“youll”和“never”),然后返回该字符串,并且循环从不完整单词的开头开始。你知道怎么做吗 编辑:正如pm2ring所提到的,目前我只关心作为单词分隔符的间距。一旦我弄明白了,我会处理逗号、连字符、换行符等等 提前谢谢 您可以使用标准库的textwrap模块 import textwrap s = "you'll

以字符串为例
s=“你永远不会知道真相”

如果我想把这个字符串分成15个字符(
s[:15]
),我会得到
“你永远不会知道”

我想用这个新字符串做的只是提取完整的单词(在本例中为“youll”和“never”),然后返回该字符串,并且循环从不完整单词的开头开始。你知道怎么做吗

编辑:正如pm2ring所提到的,目前我只关心作为单词分隔符的间距。一旦我弄明白了,我会处理逗号、连字符、换行符等等


提前谢谢

您可以使用标准库的
textwrap
模块

import textwrap

s = "you'll never know the truth, said the artificially emlengthened example string"

for chunk in textwrap.wrap(s, 15):
    print(chunk)
输出

you'll never
know the truth,
said the
artificially
emlengthened
example string

一种简单的方法是切掉所需最大块大小的子字符串(本例中为15),然后使用
str.rfind
方法定位最后一个空间。如果我们找不到一个空间,那么就吐出整个区块

一个很好的Pythonic方法是在一个生成器中

def word_split(src, chunksize):
    # Clean up any newlines and duplicate spaces
    src = ' '.join(src.split())
    while src:
        chunk = src[:chunksize]
        idx = chunk.rfind(' ')
        if idx == -1:
            # no space found
            idx = chunksize
        yield chunk[:idx]
        src = src[idx+1:]

# test

src = """you'll never know  the truth, or a way for my   loop
to start at the beginning of  the incomplete word like this
pneumonoultramicroscopicsilicovolcanoconiosis"""
chunksize = 15

for s in word_split(src, chunksize):
    print(repr(s), len(s))
输出

"you'll never" 12
'know the' 8
'truth, or a' 11
'way for my' 10
'loop to start' 13
'at the' 6
'beginning of' 12
'the incomplete' 14
'word like this' 14
'pneumonoultrami' 15
'roscopicsilicov' 15
'lcanoconiosis' 13

空格是我们需要测试的唯一单词分隔符吗?或者我们还需要处理诸如不间断空格、连字符、制表符、换行符之类的东西吗?我们如何处理包含超过15个字符的单词?肺炎显微镜硅溶胶锥虫病是一个单词@PM2Ring,谢谢你的关注。是的,现在我只关心空格作为主要分隔符。当我弄明白这一点后,我会处理你提到的其他问题。我们不需要在这里担心。我们只需要寻找分隔单词的空格,然后他想重复这个过程,这样他就可以捕获“知道答案”。等等,我想,根据他在作品中最后的评论,他也希望你忽略非英语单词,太棒了,正是我需要的,非常感谢!我是编程新手,这是我的第一个应用程序,了解所有标准库的模块和方法只是花在编码上的时间问题吗?了解工具箱中的工具是值得的,但不值得记住它们的每一个细节。我建议至少浏览一下Python库参考:)