-1

次のような文字列でいっぱいのデータ ファイルがあります。

1682|Scream of Stone (Schrei aus Stein) (1991)|08-Mar-1996

文字列を解析して分割し"|"、リストにダンプしたので、次のようになりました。

['1682', 'Scream of Stone (Schrei aus Stein) (1991)', '08-Mar-1996']

私がする必要があるのは、年を囲む括弧の位置 1 でリストをさらに分割することです。映画のタイトルに括弧がなければ簡単にできたのですが、今回はそうではありません。

次の文字が数字でない場合に括弧の分割をスキップするものを書くにはどうすればよいですか? 私はで終わりたいと思います:

['1682', 'Scream of Stone (Schrei aus Stein)', '1991', '08-Mar-1996']

いくつかの助けは素晴らしいでしょう!ありがとう

4

3 に答える 3

2

これは正規表現の仕事のように見えます!

import re

data = ['1682', 'Scream of Stone (Schrei aus Stein) (1991)', '08-Mar-1996']

def handleYear(matchobj):
    data.insert(2, matchobj.group(1))
    return ''

data[1] = re.sub(r'\s*\((\d+)\)$', handleYear, data[1])

(dddd)これにより、フォームの文字列がの末尾から削除data[1]され、 の次の位置に挿入されdataます。

于 2013-04-22T01:39:22.560 に答える
1

正規表現分割を使用できます:

import re
title="1682|Scream of Stone (Schrei aus Stein) (1991)|08-Mar-1996"
print re.split('\((\d+)\)', title.split("|")[1])

正規表現のre.split分割、つまり正規表現を区切り文字として使用します。分割式にキャプチャがある場合、区切り文字も破棄されずに分割結果に保持されます。

分割式は、\((\d+)\)最初にリテラルの括弧に一致します\( ... \)。その中で数字のみに一致します\d+。ただし、数字を保持するために数字もキャプチャします\((\d+)\)

于 2013-04-22T01:39:44.647 に答える
0

python re moduleを使用できます。

>>> import re
>>> s = 'Scream of Stone (Schrei aus Stein) (1991)'
>>> re.findall('\([0-9]+\)', s)
['(1991)']
>>> re.findall('\((\d+)\)', s)
['1991']
>>> 

年を解析したら。リスト内の任意のインデックスに挿入できます。

于 2013-04-22T01:39:04.020 に答える