私はPythonが初めてです。私は、ファイルを開く簡単なスクリプトを書いて、関数によって、行の一部をgenerator
オブジェクトに追加します。次に、このオブジェクトを使用して、別のファイルとの違いを同じようにします。私はdifflib
を使用してい違いを作るためのPython difflibリストの仕組みは?
unhashable type: 'list'.
:私は、次のエラーを得ました。
なぜこのエラーが発生するのか説明してください。私はdifflib
をf.readlines()
と一緒に使用する方法を見てきましたが、f.readlines()
もリストを返すので、私はそれを取得しません。
#! /usr/bin/python
import difflib
def lineExtractor(file):
lines = []
for line in file:
if line.startswith('g'):
if lines:
yield lines
lines = []
else:
lines.append(line)
if lines:
yield lines
with open('testfile1.txt') as file1:
lines1 = lineExtractor(file1)
with open('testfile2.txt') as file2:
lines2 = lineExtractor(file2)
for line in difflib.unified_diff(lines1, lines2, fromfile='file1', tofile='file2', lineterm='', n=0):
print line
おかげ
"リストを返す" - 何のリスト? lineExtractorは何をしますか? –
入力ファイルを1行ずつ処理します。行が 'g'で始まらない場合、行を '行'オブジェクトに追加します。したがって、基本的に 'g'で始まるevey行をフィルタリングします – Minee
'lineExtractor'は文字列のリストのようなものを返します。これは単に 'g'で始まる行をフィルタリングすること以上のものです。文字列のリストを返すだけですか? –