1

'\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'
4

6 に答える 6

11

1 つのオプション:

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
于 2012-07-13T14:26:29.627 に答える
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)
于 2012-07-13T14:28:02.973 に答える
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]
于 2012-07-13T14:29:47.243 に答える
1

あなたができるこれには正規表現は必要ありません:

book.split(' ')[0]

しかし、これを達成する方法はたくさんあります

于 2012-07-13T14:27:35.677 に答える
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]
于 2012-07-13T14:30:10.270 に答える
0

文字列ブックで使用str.split(' ')してみてください。スペースで分割され、単語のリストが表示されます。次に、実行しますbook = newList[0]

そうbook = book.split(' ')[0]

于 2012-07-13T14:28:17.833 に答える