之间说一个字

时间:2018-08-24 09:49:54

标签: python string

说我有这样的字符串:

  

他说:“我是他的父亲。”

     

那位漂亮的女士说:“拿你的书!”

     

有绿色纹身的女孩说:“你在做什么?”

我正试图从上面的句子中获得“ said”一词。

这是我到目前为止所拥有的:

createWindow()

我使用上面的代码,它给了我

  

TypeError:无法将“列表”对象隐式转换为

3 个答案:

答案 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", '"')
''