次のコード行を作成します。このコードは、ファイルから単語のペアを読み取り、それらを分割して、タプルを返します。各タプルの最初のインデックスは、最初の単語または2番目の単語のいずれかです。たとえば、a
Bob, Smith
はそれぞれとに変換され[(Bob, Smith)]
ます[(Smith, Bob)]
。これをのすべてのペアにマップしg.readlines()
ます。マップで使用できるより一般的なword_flip()関数に、 2番目のパラメーターを渡すことが可能かどうか疑問に思っていましたか?
flip = True
first_word_is_first = map(first_second_split, g.readlines()) first_word_is_second = map(second_first_split, g.readlines())
より機能的なアプローチに関するランダムな質問、文字列が与えられ、各単語の属性に基づいてその文字列を分割したい場合(つまり)、反復して分割する
Alex Smith AGE 35 420
以外に、このような問題にアプローチするより機能的な方法がありますstring.split()
str変数への行、、、name
またはage
正規room_number
表現を使用していますか?マップ、フィルター、またはitertoolsを使用することは可能ですか?できればストリングを1回通過します。
質問する
167 次
2 に答える
1
はい。で使用する場合は、
functools.partial
を使用して関数に引数を追加できますmap()
。from functools import partial first_word_is_first = map(partial(word_flip, flip=False), g.readlines()) first_word_is_second = map(partial(word_flip, flip=True), g.readlines())
ただし、リスト内包表記を使用する方が簡単です。
first_word_is_first = [word_flip(l, flip=False) for l in g.readlines()] first_word_is_second = [word_flip(l, flip=True) for l in g.readlines()]
文字列の構造(フィールド間とフィールド内の両方のスペース)では、フィールドを分割するために正規表現や専用関数などのメソッドを使用する必要があります。
于 2012-08-13T09:11:34.493 に答える
0
2の場合:
name, surname, n, age, room = 'Alex Smith AGE 35 420'.split()
メソッド呼び出しから複数の結果を返します。
于 2012-08-13T09:11:35.333 に答える