在'\ id'之后抓取字符串中的第一个单词

时间:2012-07-13 14:24:09

标签: python regex

我如何抓住字符串中'\id '之后的第一个单词?

的字符串:

'\id hello some random text that can be anything'

for line in lines_in:
    if line.startswith('\id '):
        book = line.replace('\id ', '').lower().rstrip()

我得到了什么

book = 'hello some random text that can be anything'

我想要什么

book = 'hello'

6 个答案:

答案 0 :(得分:11)

一个选项:

words = line.split()
try:
    word = words[words.index("\id") + 1]
except ValueError:
    pass    # no whitespace-delimited "\id" in the string
except IndexError:
    pass    # "\id" at the end of the string

答案 1 :(得分:10)

>>> import re
>>> text = '\id hello some random text that can be anything'
>>> match = re.search(r'\\id (\w+)', text)
>>> if match:
        print match.group(1)

更完整的版本,用于捕获'\id'

之后的任何空格
re.search(r'\\id\s*(\w+)', text)

答案 2 :(得分:1)

你可以这样做,你不需要正则表达式:

book.split(' ')[0]

但是有很多方法可以实现这个目标

答案 3 :(得分:1)

如果"\id"和单词之间没有空格,那么正则表达式就可以了。 (如果空间有保证,则使用拆分解决方案):

import re
match=re.search(r'\\id\s*(\w+)',yourstring)
if match:
   print match.group(1)

或另一种方式(没有正则表达式):

head,sep,tail=yourstring.partition(r'\id')
first_word=tail.split()[1]

答案 4 :(得分:0)

尝试在字符串簿上使用str.split(' '),它将在空格上分割,并为您提供单词列表。然后只需book = newList[0]

所以book = book.split(' ')[0]

答案 5 :(得分:0)

由于您已经检查过以"\id "开头的行,只需拆分字符串即可获得单词列表。如果你想要下一个,只需获得元素#1:

>>> line="\id hello some random text that can be anything"
>>> line.split()
['\\id', 'hello', 'some', 'random', 'text', 'that', 'can', 'be', 'anything']
    #0      #1  ...

这样你的代码就会变成这样:

for line in lines_in:
    if line.startswith('\id '):
      book = line.split()[1]