把单词放在一个给定的位置

2024-06-28 14:53:26 发布

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

s = 'hello you blablablbalba qyosud'
i = 17

如何在位置i周围找到单词?即我的例子中的blablablbalba。你知道吗


我在想这个,但似乎不太和谐:

for j, c in enumerate(s):
    if c == ' ':
        if j < i:
            start = j
        else:
            end = j
            break

print start, end
print s[start+1:end]

Tags: inyouhelloforif单词startelse
3条回答

这里是另一个简单的正则表达式方法

import re
s = 'hello you blablablbalba qyosud'
i = 17
string_at_i = re.findall(r"(\w+)", s[i:])[0]
print(re.findall(r"\w*%s\w*" % string_at_i, s))

更新:以前的模式在有空间时失败。现在的模式解决了!你知道吗

您可以按空格分割单词,然后计算空格数,直到threshold参数(i),这将是分割列表中项目的索引。你知道吗

解决方案:

print (s.split()[s[:i].count(" ")])

编辑:

如果单词之间有一个以上的空格,我们想把两个(或更多)空格看作一个空格,我们可以这样做:

print (s.split()[" ".join(s[:i].split()).count(" ")])

输出:

blablablbalba

说明:

这个返回值是2,因为在17索引之前有两个空格。你知道吗

s[:i].count(" ") # return's 2 

这是一个按空格分隔的列表。你知道吗

s.split()

您需要的是相关项的索引,它来自s[:i].count(" ")

['hello', 'you', 'blablablbalba', 'qyosud']

回答你的第一个问题

p = s[0 : i].rfind(' ')

Output: 9

关于你的第二个问题

s[ p + 1 : (s[p + 1 : ].find(' ') + p + 1) ]

Output: 'blablablbalba'

说明

  1. 从起始位置到第i个位置提取字符串。

  2. 查找上次出现的空格的索引。这将是你必读单词(第二个问题)的起点。

  3. 从这里转到下一个出现的空格,提取中间的单词。你知道吗

以下合并代码应适用于所有场景:

s = s + ' '
p = s[0 : i].rfind(' ') 
s[ p + 1 : (s[p + 1 : ].find(' ') + p + 1) ]

相关问题 更多 >