如何修剪字符串:从第一个句号后开始,到最后一个句号结束

5 投票
4 回答
1567 浏览
提问于 2025-04-18 01:49

有没有办法把一个字符串修剪到从特定的地方开始和结束呢?

举个例子:我希望这个字符串(文本)能在第一个句号后面开始,然后在最后一个句号前面结束。

_string = "money is good. love is better. be lucky to have any. can't really have both"

期望的输出结果:

"love is better. be lucky to have any."

我尝试过:

import re
pattern = "\.(?P<_string>.*?.*?).\"
match = re.search(pattern, _string)
if match != None:
    print match.group("_string")

我开始得不错,但在第二个句号那里就停下来了。

有没有什么想法可以让我得到期望的输出结果呢?

4 个回答

0
import re
_string = "money is good. love is better. be lucky to have any. can't really have both"
str1 =_string[_string.find(".")+1:]
for i in range(len(str1)-1,0,-1):
if(str1[i]=='.'):
    a=str1[:i+1]
    break
print a
#love is better. be lucky to have any.

这段代码是用来做某些操作的,但具体的功能需要根据上下文来理解。通常情况下,代码块里会包含一些指令或者函数,这些指令会告诉计算机该如何处理数据或者执行任务。

如果你是编程新手,可以把代码想象成一系列的步骤,就像做菜时需要按照食谱一步一步来。每一行代码就像是食谱中的一个步骤,执行这些步骤后,计算机就能完成你想要的工作。

在学习编程时,理解每一行代码的作用是非常重要的。你可以尝试逐行分析,看看每一行是做什么的,这样能帮助你更好地掌握编程的基本概念。

总之,代码块里的内容是编程的核心,通过理解这些内容,你可以逐渐学会如何编写自己的程序。

0

这个正则表达式应该是:

 \.(.*\.)

这个表达式会抓取所有的文本,除了第一个和最后一个 . 之间的 换行符

解释:

\. matches the character . literally
1st Capturing group (.*\.)
    .* matches any character (except newline)
        Quantifier: Between zero and unlimited times, as many times as possible, giving back as needed [greedy]
    \. matches the character . literally

如果你不想在开头有空格,可以用这个:

\.\s(.*\.)

希望这对你有帮助。

1

那使用 .index().rindex() 这两个方法配合字符串切片怎么样呢?

string = "money is good. love is better. be lucky to have any. can't really have both"
first_full_stop = string.index('.')
last_full_stop = string.rindex('.')
string = string[first_full_stop+1:last_full_stop+1]

或者你可以通过句号来分割字符串(这个方法可以处理任意数量的句号):

string = "money is good. love is better. be lucky to have any. can't really have both"
string = string.split('.')
string = string[1:-1]
5

这个方法可以用,只要字符串里至少有一个点。

print _string[_string.index(".") + 1:_string.rindex(".") + 1]
#  love is better. be lucky to have any.

如果你不想让开头有空格,可以这样去掉它。

print _string[_string.index(".") + 1:_string.rindex(".") + 1].lstrip()
# love is better. be lucky to have any.

撰写回答