如何修剪字符串:从第一个句号后开始,到最后一个句号结束
有没有办法把一个字符串修剪到从特定的地方开始和结束呢?
举个例子:我希望这个字符串(文本)能在第一个句号后面开始,然后在最后一个句号前面结束。
_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.