我如何抓住字符串中'\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'
答案 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]