私はファイルを読み込み、すべての行の長さが同じかどうかを判断する必要があります。彼らは私が "良い"フォルダにファイルを移動し、それらがすべて同じ長さでない場合、私は "悪い"フォルダに移動し、どの行が残りの部分と同じではないことを言うdocを書く。どのような助けや方法で始めることができますか?ファイルを読み込んで、すべての行が同じ長さであるかどうかを調べる
答えて
まず第一に、あなたはここで、example.txt
をファイルを読み込み、リスト内のすべての行を入れて、content
ことができます。
with open(filename) as f:
content = f.readlines()
次は行の末尾からすべての改行文字をトリミングし、それを配置する必要があります別のリストresult
中:今すぐ
for line in content:
line = line.strip()
result.append(line)
あなたが悪いの行をしたいので、それはすべての文の長さを取得することは難しいことではありません、そして、リストをあなたがループ:
for line in result:
lengths.append(len(line))
したがって、result
のi番目の要素の長さは、[lengths
のi番目の要素]です。リスト内でどのような行の長さが最も多く発生しているかを判断することができます。これは1行のように簡単です!
most_occuring = max(set(lengths), key=lengths.count)
今、私たちは別のfor-loop
が最も-occuringに対応し、bad-lines
にそれらを追加しない長されたチェックすることができます:
for i in range(len(lengths)):
if (lengths[i] != most_occuring):
bad_lines.append([i, result[i]])
次のステップは、ファイルが行く必要チェックです、良いフォルダ、または悪いフォルダ:
if len(bad_lines == 0):
#Good file, move it to the good folder, use the os or shutil module
os.rename("path/to/current/file.foo", "path/to/new/desination/for/file.foo")
else:
#Bad file, one or more lines are bad, thus move it to the bad folder
os.rename("path/to/current/file.foo", "path/to/new/desination/for/file.foo")
行う可能な、別のファイルへの不正な行を書いている最後のステップは、我々はすでに悪いのラインを持っているので、リストbad_lines
に:
with open("bad_lines.txt", "wb") as f:
for bad_line in bad_lines:
f.write("[%3i] %s\n" % (bad_line[0], bad_line[1]))
それは、docファイルではありませんが、私はこれは素晴らしいスタートだと思います。本当にdocファイルに書きたい場合は、docxモジュールを見ることができます。
EDIT:ここにpythonスクリプトの例を示します。
with open("example.txt") as f:
content = f.readlines()
result = []
lengths = []
#Strip the file of \n
for line in content:
line = line.strip()
result.append(line)
lengths.append(len(line))
most_occuring = max(set(lengths), key=lengths.count)
bad_lines = []
for i in range(len(lengths)):
if (lengths[i] != most_occuring):
#Append the bad_line to bad_lines
bad_lines.append([i, result[i]])
#Check if it's a good, or a bad file
#if len(bad_lines == 0):
#Good File
#Move file to the good folder...
#else:
#Bad File
with open("bad_lines.txt", "wb") as f:
for bad_line in bad_lines:
f.write("[%3i] %s\n" % (bad_line[0], bad_line[1]))
'line = line.strip()'は、行末の改行文字より少しだけトリムします。 – Evert
とにかく改行を削除する必要はありません。それらは同じ長さでなければなりません。 – zondo
あなたはそれについてもう少しストリッピングしていますが、それは仕事を完了します。あなたは実際にそれを取り除くこともできますが、それはリストのほうがきれいに見えます。それを省略した場合は、書き込みファイルの部分にある\ nも削除する必要があります。 これがダウンリストに追加された理由ですか?これは私の最初の答えですので、改善すべき点を知りたいと思います。 私はあなたの答えzondoにコメントすることはできませんが、彼はまた異なっている行を尋ねるので、それらのすべてをループする必要があります。私の答えでは、時間の効率を上げるために部品を1つのループにまとめることができることに注意してください(それほど多くはありませんが、まだO(n)になります) –
あなたはall()
を使用する必要があります。
with open(filename) as read_file:
length = len(read_file.readline())
if all(len(line) == length for line in read_file):
# Move to good folder
else:
# Move to bad folder
all()
が短絡されているので、それは最初の非一致でファイルの読み込みを停止します。
私はこのメソッドを試していますが、このエラーが発生していますlength = len(file.readline())AttributeError: 'str'オブジェクトに 'readline'属性がありません –
@JustinStarkman:すみません、今修正されました。 – zondo
- 1. csvファイルに同じ項目があるかどうかを調べる
- 2. セルの日付と年が同じであるかどうかを調べる
- 3. 配列内のすべての値が同じであるかどうかを調べる - Visual Basic
- 4. C#文字列内のすべての文字が同じであるかどうかを調べる
- 5. Joda時間の長さが0秒であるかどうかを調べる
- 6. charが改行であるかどうかを調べる
- 7. アルゴリズム - あるサイズの対角線が行列内に同じ値であるかどうかを調べる
- 8. フォルダからすべてのファイルを読み込んで読み込むPython
- 9. PHPで文字がcharで読み込まれているかどうかを調べるには
- 10. すべてのページに同じHTMLを読み込みます
- 11. フィールドがtweepyでNONEであるかどうかを調べる
- 12. オブジェクトがJavaScriptのマップであるかどうかを調べる
- 13. PHPでページが読み込まれる内容を調べる
- 14. 整数が何回出現し、最も長いシーケンスがファイルから読み込まれるかを調べるにはどうすればよいですか?
- 15. インストールされているアプリケーションがx64であるかどうかを調べる
- 16. テキストファイルから読み込み、それが牛で最高のcostpermonthであるかどうかを調べて画面に出力してください。
- 17. Unityで読み込み画面を作る方法、シーンが完全に読み込まれたかどうかを調べることができます
- 18. ファイルが.NETで書き込みアクセス権を持っているかどうかを調べる
- 19. すべてのフォームフィールドに入力があるかどうかを調べる
- 20. ファイルから単語を読み込んで同じ行に書き込む
- 21. ブラウザでSwfの読み込み時間を調べる
- 22. 関数がconstであるかどうかを調べる
- 23. tensorflow:スカラーブールテンソルがTrueであるかどうかを調べる
- 24. カラムがNOT NULLであるかどうかを調べる
- 25. 数値がfloat64であるかどうかを調べる
- 26. JTextFieldsが空であるかどうかを調べる
- 27. シートが空であるかどうかを調べるには?
- 28. オブジェクトがブール値であるかどうかを調べる
- 29. Kombu + RabbitMQ:キューが空であるかどうかを調べる
- 30. linuxでフォルダがコピープロセスにあるかどうかを調べる
コードのスニペットをお願いしますか?ヒント:この作業を行うためにいくつかの 'for'ループとdo-whileループが必要です。さらに、各行と各ページの状態を保存します。 Word文書用のVBS。これは、出力を生成するたびに呼び出されるテンプレートとして作成されます。ここで多くの仕事があります。 – Sparky256