0

私はpythonが初めてで、ラムダ関数の使用法を解明しようとしています。照合する必要があるテキスト ファイルにネットワーク ユーザー名の 2 つのリストがあります。これまでのところ、コードは問題なく動作しますが (名前は一致しますが、大文字と小文字が区別されます)、これらのファイルの両方のテキストは大文字と小文字が混在しています。あるリストに smith, john (FINANCE) がいて、別のリストに SMITH,John (Finance) がいるかもしれません。何百ものユーザー テキスト ファイルがあります。私がする必要があるのは、両方のリストを (たとえば大文字に) 正規化し、大文字と小文字に関係なく一致するようにすることです。私のPythonの知識の欠如が私を妨げています。私は次のものを持っています

with open (filename, "r") as file1:
    #file1m=map(lambda x: x.upper(),file1)
    for line in islice(file1,20,None)
        with open ("c:\\userlists\test.txt", "r") as file2:

しかし、正直に言うと、ラムダ関数がそのコードのどこにあるのかわかりません。ハッシュが表示されている場所で試してみましたが、python はユーザー名を一致させないようです。大文字の file2 を実行する必要があることはわかっていますが、このテストでは、プロセスを簡略化するために、test.txt に大文字の名前をいくつか追加して、動作するかどうかを確認しました。前述のように、ラムダ関数がないと、私のコードは必要なことを実行し、ユーザー名と一致しますが、大文字と小文字が区別されます。どんな助けでも本当に感謝しています。

どうもありがとう

4

2 に答える 2

1

これを使用して、ファイルを大文字に変換できます。その後、あなたは彼らとやりたいことをすることができます. または、以下のコードをアイデアとして使用し、実行しようとしていることに合わせて調整することもできます。

file1 = "C:/temp/file1.txt" # first file
file2 = "C:/temp/file2.txt"  # second file

m_upper = lambda x: x.upper() # uppercase lambda function.

# open the files, read them, map using the mapper,
# and write them back with append.
def map_file(file_path, append='_upper', mapper=m_upper):
    file_name, ext = file_path.rsplit('.', 1)
    new_fp = '%s%s.%s' % (file_name, append, ext)
    with open(file_path) as f_in, open(new_fp, 'w') as f_out:
        f_out.write(''.join(map(mapper, f_in)))

map_file(file1) # file1.txt -> file1_upper.txt (all uppercase)
map_file(file2) # file2.txt -> file2_upper.txt (all uppercase)
于 2013-05-30T12:47:47.447 に答える