说我有这样的字符串:
他说:“我是他的父亲。”
那位漂亮的女士说:“拿你的书!”
有绿色纹身的女孩说:“你在做什么?”
我正试图从上面的句子中获得“ said”一词。
这是我到目前为止所拥有的:
createWindow()
我使用上面的代码,它给了我
TypeError:无法将“列表”对象隐式转换为
答案 0 :(得分:0)
每个人都解释了您的错误消息,因此我建议使用其他方法。
您可以使用列表理解功能。
def return_word(sentence, word):
if word in sentence.split():
return [i for i in sentence.split() if i == word][0]
else:
return ''
print(return_word('sample sentence', 'sentence'))
此代码将满足您的需求。尽管您的要求似乎不清楚,但我希望您对此有所了解。
干杯!
答案 1 :(得分:0)
如果要获取被引用句子之前使用的单词,可以使用"
进行拆分,然后使用空格' '
进行拆分,如下例所示:
test = 'That pretty lady said "Get your book!"'
test.split('"')[0].split(' ')[-2]
答案 2 :(得分:0)
我将您之间的名称重命名为word_before
def word_before(text, char_after):
return text.split(char_after, maxsplit=1)[0].split(" ")[-2]
与测试字符串一起使用:
>>> tests = [
... 'He said "I am his father."',
... 'That pretty lady said "Get your book!"',
... 'The girl with the green tatoo said "What are you doing?"',
... ]
>>>
>>> for text in tests: print(word_before(text, '"'))
...
said
said
said
它如何工作?
第一次拆分会将您的字符串按给定字符拆分成两半,然后停止搜索(这就是我们使用maxsplit = 1的原因)。
第二次拆分会将文本拆分成单词(每个空格),我们采用倒数第二个项目,因为最后一个实际上只是一个空字符串''
。
然后,我们返回此结果。
如果您想对此做进一步的改进,可以添加一个try-except
块检查IndexError,这表明它找不到任何匹配项。
例如,您可以按照以下方式做一些事情
def word_before(text, char_after):
parts = text.split(char_after, maxsplit=1)
if len(parts) <= 1:
return '' # No match
try:
match = parts[0].split(" ")[-2]
except IndexError:
return '' # No word before
return match
在不匹配时会给出以下结果
>>> word_before("No quote here", '"')
''