【问题标题】:How can I grab a group of words from a string?如何从字符串中获取一组单词?
【发布时间】:2018-04-10 23:34:40
【问题描述】:

我有一个字符串是一个句子。句子中有八个字。我正在尝试做的是取句子的第三个、第四个和第五个单词。我尝试过使用索引,例如:

string[3][4][5]

但这会引发IndexError。我在这里错过了什么?

【问题讨论】:

  • (1) 你所做的就是索引。 (2) 我相信你想要的叫做 slicing:page_soup.title.string[3:6].
  • 假设page_soup.title.string 是一个单词列表。它似乎更有可能只是一个大字符串,因此该解决方案将获取第三、第四和第五个字符。
  • @JohnGordon 是的,但您假设当他说“单词”时,他的意思是“一组字符”。这不一定是真的。他已经对列表切片的术语感到困惑。他可以在这里做同样的事情。
  • 您是否要从“This is my title with 7 words”之类的字符串中提取单词?
  • 一句话,8个字。我要抢第三个字和第五个字。

标签: python indexing split slice


【解决方案1】:

你可以试试这个:

thead = page_soup.title.string
final_word1, final_word2 = thead.split()[2], thead.split()[4]

【讨论】:

  • 为什么不直接:third, fourth, fifth = page_soup.title.string.split()[3:6]?
  • 另外,您的解决方案不正确:“第三个,第四个,第五个单词是句子”。
  • @ChristianDean OP 本人在聊天“我要抢第三个字和第五个字”。
【解决方案2】:
# split the title string into words (split by spaces)
thead_list = page_soup.title.string.split()

# access elements with index 3, 4, 5
words = thead_list[3:6]

或者,如果您只想要第三个和第五个单词,请使用 thead_list[2] 和 thead_list[4]

如果您需要连接提取的结果单词,请执行以下操作:

new_title = " ".join(words) # converts ["word1", "word2"] to "word1 word2"

将以上所有步骤组合成一行代码:

thead = " ".join(page_soup.title.string.split()[3:6])

【讨论】:

  • 当我使用你的代码时,我得到了奇怪的结果。出于某种原因,它抓住了每个单词的第三个单词。此外,它显示如下内容:[u'MyThirdWord'] - 添加[u'] 不是我想要的。
  • @JamesDean:每个单词的第三个单词?另外,“u”实际上并不是单词的一部分,所以不用担心
  • 是的,我知道,但它会在我的 html 页面上打印出来。还有,为什么不能简单点:thead = page_soup.title.string.split()[3:4]?
  • @JamesDean:当然,你可以做到。我只写了两行,所以我可以添加一些 cmets
  • 对,我使用“简单”的方法,但是,它打印出不寻常的结果。添加括号 [, this ' 和 another '。此外,它不会打印第三个或第四个单词。
猜你喜欢
  • 2012-11-25
  • 1970-01-01
  • 1970-01-01
  • 2020-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-22
  • 1970-01-01
相关资源
最近更新 更多