パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

Python CSVとTXTファイルから指定した長さの英単語を抽出するプログラム

2023-03-27 | 新規1000万人ぐらいにプログラムをマスターしてもらいたい

Wordleという英単語当てのAI用に5,6,7,8文字の長さの英単語集が必要だったので作ってみた話

 

単語集のあるサイトから単語集をダウンロード

 

そのデータをまとめて開いて長さ別と全部を取得するプログラムを書いてみたものがこちら

簡単な説明

getn関数 ファイル名と全部取得するかを渡す、

プログラムと同じフォルダにあるファイル名のファイルにたいして行う

全部取得しない場合は、あらかじめglobal変数で与えられたnの長さの文字列を返す(nは17行目で設定しています)

 

4行でファイルを開き 5行目で各行ごとに分割

6行目で各行についている改行コードを取る

7行目文字のない行をとばす

8,9行目で単語ごとに抽出できるように行を整える(ここはファイルの内容によっては個別に修正必要)

10行目で分割する

11,12行目文字列の長さを全部にした時、ここで活用しているデータでは数字だけの行なども入ってしまうため

それを取り除く

12,14行目では同じ単語が複数回現れないように集合型にして返す

 

実行結果

 

コピペできるソースリストはこちら

 

def getn(filename,all=False):
    words=[]

    with open("./"+filename) as f:
        for line in f:
            line=line.rstrip("\n")
            if len(line)==0:continue
            line=line.replace("."," ").replace(","," ").replace("-"," ").\
            replace("  "," ").strip().upper()
            words+=line.split(" ")
    if all:
        return set([w for w in words if len(set(list("0123456789"))&set(list(w)))==0])
    else:
        return set([w for w in words if len(w)==n])


for n in [5,6,7,8]:
    word=getn("TSL_1.1_alphabetized_description.txt") |\
    getn("TSL_1.1_lemmatized_for_research.csv") |\
    getn("TSL_1.1_lemmatized_for_teaching.txt") |\
    getn("TSL_1.1_stats.csv") |\
    getn("charGPT.txt")
    print(word)

word=getn("TSL_1.1_alphabetized_description.txt",True) |\
    getn("TSL_1.1_lemmatized_for_research.csv",True) |\
    getn("TSL_1.1_lemmatized_for_teaching.txt",True) |\
    getn("TSL_1.1_stats.csv",True) |\
    getn("charGPT.txt",True)

print(word)

 


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。