如何在知道起点和终点的python中选择一个字符串?
如果字符串是:
Evelin said, "Hi Dude! How are you?" and no one cared!!
或类似的东西:
Jane said *aww! thats cute, we must try it!* John replied, "Okay!, but not now!!"
我想要写的是一个从" "
中选择而不是通过计算索引的函数,
但是只选择从字符到字符的文本,
"Hi Dude! How are you?"
和"Okay!, but not now!!"
所以我怎么能这样做?有内置功能吗?
我知道python中有一个内置函数可以获取给定字符的索引
即,
find("something")
返回字符串中给定字符串的索引。
还是需要遍历字符串?
我刚开始使用python,对不起这样的小问题。 python 2或3就可以了!!非常感谢你!
谢谢大家的答案,作为一个初学者,我只想坚持使用内置的split()
函数quotes = string.split('"')[1::2]
,因为它很简单。谢谢你们。非常喜欢:))
答案 0 :(得分:2)
txt='''\
Evelin said, "Hi Dude! How are you?" and no one cared!!
Jane said *aww! thats cute, we must try it!* John replied, "Okay!, but not now!!"'''
import re
print re.findall(r'"([^"]+)"', txt)
# ['Hi Dude! How are you?', 'Okay!, but not now!!']
答案 1 :(得分:1)
如果您不想使用str.index()
:
import re
quotes = re.findall('"([^"]*)"', string)
您可以轻松扩展它以从字符串中提取其他信息。
可替换地:
quotes = string.split('"')[1::2]
使用str.index()
:
first = string.index('"')
second = string.index('"', first+1)
quote = string[first+1:second]
答案 2 :(得分:1)
要按字符提取子字符串,拆分对这些字符要容易得多; str.partition()
和str.rpartition()
在给定字符串的第一次或最后一次出现时有效地拆分字符串:
extracted = inputstring.partition('"')[-1].rpartition('"')[0]
从开始和结束分区的组合为您提供了可能的最大子字符串,在那里留下任何嵌入的引号。
演示:
>>> inputstring = 'Evelin said, "Hi Dude! How are you?" and no one cared!!'
>>> inputstring.partition('"')
('Evelin said, ', '"', 'Hi Dude! How are you?" and no one cared!!')
>>> inputstring.rpartition('"')
('Evelin said, "Hi Dude! How are you?', '"', ' and no one cared!!')
>>> inputstring.partition('"')[-1].rpartition('"')[0]
'Hi Dude! How are you?'
答案 3 :(得分:1)
str.index(str2)在str中查找str2的索引...最简单的方法!
a = 'Evelin said, "Hi Dude! How are you?" and no one cared!!'
print a[1+a.index("\""):1+a.index("\"")+a[a.index("\"")+1:].index("\"")]
或者如Scorpion_God所提到的,你可以简单地使用单引号,如下所示
print a[1+a.index('"'):1+a.index('"')+a[a.index('"')+1:].index('"')]
这将导致:
Hi Dude! How are you?
不会包含行情!!!