2

これは私のコードの終わりです:

duplicates = [files for files in file_dict.values() if len(files) > 1]

dupString = str(duplicates)

text_file.write("\n\n\nDuplicates Files: \n\n" + (dupString))

txt ファイルの出力は次のとおりです。

[['/Users/simon/Desktop/aF/file1.py', '/Users/simon/Desktop/aF/hidden/file2.py', '/Users/simon/Desktop/aF/hidden/file3.py']]

出力を次のようにしたい:

/Users/simon/Desktop/aF/file1.py
/Users/simon/Desktop/aF/hidden/file2.py
/Users/simon/Desktop/aF/hidden/file3.py

どうすればこれを実現できますか? ' '.join(dupString) と '\n'.join(dupString) を使用してみましたが、文字列値にスペースや改行が含まれるようになりましたが、これは私が望んでいたものではありませんでした。

4

1 に答える 1

2

わかりました、それは私の理解です:

duplicates = [files for files in file_dict.values() if len(files) > 1]

ファイルのリストのリストを返します。あなたの例はこれです:

[['/Users/simon/Desktop/aF/file1.py', '/Users/simon/Desktop/aF/hidden/file2.py', '/Users/simon/Desktop/aF/hidden/file3.py']]

その場合、最初に行う必要があるのは、文字列のリストのみを作成するように変更することです。itertools.chain.from_iterable

from itertools import chain
duplicates = chain.from_iterable([files for files in file_dict.values() if len(files) > 1])

あとは、次のように書くだけです。

text_file.write("\n\n\nDuplicates Files: \n\n%s" % '\n'.join(duplicates)) 
于 2013-09-15T10:18:29.877 に答える