0

次の形式の Python リストがいくつかあります。

rating = ['What is your rating for?: Bob', 'What is your rating for?: Alice', 'What is your rating for?: Mary Jane']

opinion = ['What is your opinion of?: Bob', 'What is your opinion of?: Alice', 'What is your opinion of?: Mary Jane']

特定のリストを評価し、そこから 2 つのデータ構造を生成する関数を作成しようとしています。

  1. コロン (:) の後に表示される名前のリスト
  2. コロン (:) の前に繰り返されるテキストを持つ文字列変数

理想的には、元のリスト名に基づいて両方の項目に名前を付けます。また、区切り文字とその後の最初のスペースは無視する必要があります。

上記の 2 つの例の出力例:

rating_names = ['Bob', 'Alice', 'Mary Jane']
rating_text = 'What is your rating for?'

opinion_names = ['Bob', 'Alice', 'Mary Jane']
opinion_text = 'What is your opinion of?'

各リスト項目から固定文字列を削除することで、単一のリストに対してこれを機能させることができましたが、区切り文字の前の可変数の文字と2の可能性に対して機能させる方法を完全には理解していませんその後に単語名 (例: 'Mary Jane') を付けます。

rating_names = ([s.replace('What is your rating for?': ','') for s in rating])

検索後、look-ahead ( 1 , 2 )のような正規表現が解決策のように見えますが、それも機能しません。

4

3 に答える 3

0

処理するリストが多数ある場合は、データを直接ディクショナリに入れることを検討してください。これは、Elazar への質問に答えるのに役立つかもしれません。

コード

def dict_gen(d, l):
    for s in l:
        question, name = s.split(': ')
        if question not in d:
            d[question] = []    
        d[question].append(name)

使用法

rating = ['What is your rating for?: Bob', 'What is your rating for?: Alice', 'What is your rating for?: Mary Jane']
opinion = ['What is your opinion of?: Bob', 'What is your opinion of?: Alice', 'What is your opinion of?: Mary Jane']

results = {}
dict_gen(results, rating)
dict_gen(results, opinion)

for key, value in results.items():
    print key, value

収量

あなたの評価は何ですか?[「ボブ」、「アリス」、「メリー・ジェーン」]
あなたの意見は? [「ボブ」、「アリス」、「メリー・ジェーン」]

于 2013-05-16T03:50:43.053 に答える