うめこの開発日記

PCゲームや人工知能関連の話題についての日記

Pythonで濁音が分離された文字列を結合する方法

ある処理を行っていた時,文字列の判定で少し苦労しました. あるデータ"グルメ.xlsx"というファイルを読み込んで,ファイル名で処理を変えようと思い,とりあえず以下のように書きました.

for fname in glob.glob(./data/*.xlsx):
    if 'グルメ' in fname:
        print(fname)

しかし,何故か何も出力されずに処理が終わってしまうのです."グルメ.xlsx"ファイル自体は存在し,fnameを出力させても”グルメ”の文字列は存在しています. なぜかinで判定出来ないのです.そこで,unicodeの値を見てみると

print(fname.encode('unicode-escape'))
print('グルメ.xlsx'.encode('unicode-escape'))
b'\\u30af\\u3099\\u30eb\\u30e1.xlsx'
b'\\u30b0\\u30eb\\u30e1.xlsx'

下と比べて上はなんか一文字分入ってる...この文字(\u3099)をネットで検索してみると...

https://glyphwiki.org/wiki/u3099

濁点やんけ!!!!!!!

ようやく原因がわかりました.何故か濁音の文字が分離されていたのです!!!(何故?globのせい?)

とりあえず原因がわかったので,以下のように対応しました.標準ライブラリのunicodedata.normalize関数は複数存在する文字の表現を1つの表現に整形してくれる関数です.便利便利

import unicodedata

# 濁点の分離を整形
fname = unicodedata.normalize('NFKC', fname)

print(fname.encode('unicode-escape'))
print('グルメ.xlsl'.encode('unicode-escape'))

出力はきれいに同じ形になっていますね

b'\\u30b0\\u30eb\\u30e1.xlsl'
b'\\u30b0\\u30eb\\u30e1.xlsl'

Pythonでエクセルファイルの特定の背景色のセルを取得する方法

openpyxlを利用して,特定の背景色のセルを取得することができます. ファイルの拡張子は.xlsx限定です.

import openpyxl

# xlsxファイルの読み込み
filename = 'test.xlsx'
wb = openpyxl.load_workbook(filename)

# シートは1枚を仮定し,最初のシートの取得
sheet = book[book.sheetnames[0]]

# 2番目の列に対して,背景色が無いセルの値を取得していく
# 背景色が無い場合,bgcolorは'00000000'になる(特定の色を取りたい時はここを変える)
mylist = []
for i in range(2,1002):
    cell = sheet.cell(row=i, column=2)
    bgcolor = cell.fill.bgColor.value
    if bgcolor=='00000000':
        mylist.append(cell.value)

【ゲームレビュー】Deliver Us The Moon

f:id:aniharu:20200701180422p:plain

【プレイ時間】: 5時間

【おすすめ度】: ⭐⭐⭐

【良い点】

  • 宇宙・SF好き歓喜
  • 邪魔な情報がなくHUDがスッキリ
  • 日本語字幕対応
  • 映画を自分で体験しているような感じ
  • レイトレーシング対応

【悪い点】

  • 価格の割にボリュームが少ない
  • リアル寄りのため話の起伏が小さい
  • ゲーム内で得られる情報が少ない

 

月へ届け!近未来SFスリラー

 

近未来の地球は資源が枯渇し,人類は絶滅の一途をたどっていたのですが,ある科学者が月に存在するヘリウム3を発見し,これが発電に大きく役立つことを発見しました.そこで人類は,月で発電し,地球に向けて送電する形でこれを利用することにし,結果的に,地球の20%の電力をまかなうことが出来ました.しかし,ゲームが始まる2050年に,突如月からの送電が止まってしまい地球は大混乱,このままでは人類の滅亡は必至です.そこで主人公らは,この原因を調査するために,資源が枯渇した世界で何年もかけ自分たちを月へ運ぶロケットを準備してきました.さぁ,月になにが起こったか調査する時がきたのです!

f:id:aniharu:20200701183832p:plain

f:id:aniharu:20200701183848p:plain

個人的に思うこのゲームの特徴は,そのリアルへの忠実さです.宇宙の表現,壊れたステーションその表現はとてもリアルに感じました.

f:id:aniharu:20200701184022p:plain

一応日本語にも対応してくれています.ただ,翻訳は結構ガバガバで,字幕部分にちょっとした問題点があります.

f:id:aniharu:20200701184127p:plain

宇宙の表現はとても綺麗

f:id:aniharu:20200701184253p:plain

 

全体的にストーリーは大きなどんでん返しがあるわけでもなく,淡々と進んでいきます.話は,落ちているメモや本,過去の状況を再生するプロジェクターからのみ知ることができます,自分以外の人はほぼ出てくることはなく,宇宙の孤独さみたいなものをとても感じられます.ゲームとしては全員に進められる感じではなく,宇宙やSFが好きな人におすすめしたいゲームでした.