0

私は 181 個のテキスト ファイルのフォルダーを持っており、それぞれに数字が含まれていますが、「サイズ」を持つ行のファイルに 0.5 などの定数変数を掛けるだけで済みますが、次のようにしてこれを達成しました:数学演算を検索して結果に置き換えますNotepad ++で しかし、私がやろうとしているのは、式や引用符を使用しないことです。これにより、私が参加しているコミュニティの他のメンバーは、各数値を乗算するために必要な形式に合わせてすべてのファイルを編集することなく、同じことを簡単に行うことができます. 例えば:

    farmers = {
        culture = armenian
        religion = coptic
        size = 11850
    }

を 0.5 倍して次のようにします。

    farmers = {
        culture = armenian
        religion = coptic
        size = 5925
    }

私はPythonスクリプトを作成しようとしましたが、あまりPythonを知りませんがうまくいきませんでした:

import operator

with open('*.txt', 'r') as file:
    data = file.readlines()

factor = 0.5
count = 0

for index, line in enumerate(data):
    try:
        first_word = line.split()[0]
    except IndexError:
        pass

    if first_word == 'size':
        split_line = line.split(' ')
        # print(' '.join(split_line))
        # print(split_line)
        new_line = split_line

        new_line[-1] = ("{0:.6f}".format(float(split_line[-1]) * factor))
        new_line = ' '.join(new_line) + '\n'
        # print(new_line)

        data[index] = new_line

        count += 1

    elif first_word == 'text_scale':
        split_line = line.split(' ')
        # print(split_line)
        # print(' '.join(split_line))
        new_line = split_line

        new_line[-1] = "{0:.2f}".format(float(split_line[-1]) * factor)
        new_line = ' '.join(new_line) + '\n'
        # print(new_line)

        data[index] = new_line

        count += 1


with open('*.txt', 'w') as file:
    file.writelines(data)

print("Lines changed:", count)

これに対する解決策はありますか?私は、コミュニティの人々がすべてのファイルをフォーマットして、私のソリューションで作業できるようにするわけではありません。notepad ++またはSublime Text 3を使用している人にとって、誰でもすばやく簡単に理解できる簡単なソリューションが見つからなかったというだけで、何でもうまくいく可能性があります.

4

1 に答える 1