【问题标题】:python how to extract the text between two known words in a string?python如何提取字符串中两个已知单词之间的文本?
【发布时间】:2019-03-07 02:43:05
【问题描述】:

如何提取字符串中两个已知单词之间的文本,条件是这些单词之间的文本可以是 i) 1 个字符 ii) 1 个单词 iii) 2 个单词等?

示例文本:

text = ("MNOTES - GEO GEO MNOTES 20 231-0005 GEO GEO GEO GEO GEO MNOTES SOME REVISION MNOTES CASUAL C GEO GEO GEO GEO GEO MNOTES F232322500 MNOTES HELP PAGES GEO GEO GEO GEO MNOTES SHEET 1 OF 3 GEO GEO MNOTES CASUAL E. GEO GEO MNOTES SITPOPE/TIN AY GEO GEO MNOTES R GEO GEO GEO GEO MNOTES 22+0436/T.SKI/11-AUG-1986 GEO GEO GEO GEO MNOTES 231-0045 GEO")

我有一个像上面这样的字符串,其中多次出现这两个已知单词 'MNOTES''GEO',但是它们之间的文本可以是任何单词和任意数量的单词。

我有时想提取在这两个已知单词之间只有一个字符的文本,或者有时在这两个已知单词之间有 2 个单词的文本,或者有时在这两个已知单词之间有 6 个单词的文本等, 那么,我怎样才能连同条件一起提取呢?

【问题讨论】:

  • 您想使用正则表达式。看看这个答案,希望它能解决你的问题。 stackoverflow.com/questions/32680030/…
  • 如果你从这个字符串发布你想要的输出会很好。
  • 条件 1:提取在 MNOTES 和 GEO 输出 1 之间有一个字符的文本: '-' , 'R' ;条件 2:提取在 MNOTES 和 GEO 输出 2 之间有两个单词的文本:'20 231-0005'、'CASUAL C'、'CASUAL E.'、'SITPOPE/TIN AY'

标签: python regex


【解决方案1】:

使用re.findall

import re

re.findall('MNOTES(.*?)GEO', text)

这会导致:

[' - ', ' 20 231-0005 ', ' SOME REVISION MNOTES CASUAL C ', ' F232322500 MNOTES HELP PAGES ', ' SHEET 1 OF 3 ', ' CASUAL E. ', ' SITPOPE/TIN AY ', ' R ', ' 22+0436/T.SKI/11-AUG-1986 ', ' 231-0045 ']

编辑

要获得特定数量的字符,可以使用以下方法:

re.findall('MNOTES\s?(.{1})\s?GEO', text)

结果

['-', 'R']

并且只获得 6-8 个字符长的结果:

re.findall('MNOTES\s?(.{6,8})\s?GEO', text)

结果:

['- GEO ', 'CASUAL C', 'R GEO ', '231-0045']

【讨论】:

  • 您的输出错误。根据您的回答,它将是“['-','20 231-0005','CASUAL C','SHEET 1 OF 3','CASUAL E.','R','231-0045']”
  • 我想根据字数或字符数进行提取。例如,只有当单词之间的文本是一个字符时才给我输出......在这种情况下,我只想要'-','R',我怎么能把它作为脚本中的条件?请提出建议。
  • @PS1212 否,请参阅:repl.it/repls/ProfuseCorruptDirectory 我的答案是正确的
  • 我似乎无法让每个单词都能正常工作,但这是你按字符数划分的
猜你喜欢
  • 2013-07-25
  • 2018-08-16
  • 2020-11-13
  • 2012-04-13
  • 2020-11-05
  • 2013-12-12
  • 2014-05-28
  • 2020-12-30
  • 1970-01-01
相关资源
最近更新 更多