[解決済み] Pythonで文字列のヌルバイトを見つけるには?
2022-02-10 04:05:11
質問
ファイルを読み込んだ後のデータのパースに問題があります。バイナリファイルを読み込んで、読み込んだファイルから属性のリストを作成する必要があるのですが、ファイル内のデータはすべてヌルバイトで終了しています。NULL バイトで終端する属性のすべてのインスタンスを見つけようとしています。
基本的には次のような文字列を取ります。
Health\x00experience\x00charactername\x00
を作成し、リストに格納します。
本当の問題は、ヌルバイトをそのままにしておくことです。ヌルバイトの各インスタンスを見つけ、その前にあるデータを保存できればいいのです。
解決方法は?
を使うことに集約されますが
split('\x00')
のような便利なラッパーがあってもいいかもしれません。
def readlines(f, bufsize):
buf = ""
data = True
while data:
data = f.read(bufsize)
buf += data
lines = buf.split('\x00')
buf = lines.pop()
for line in lines:
yield line + '\x00'
yield buf + '\x00'
とすると、次のようなことができます。
with open('myfile', 'rb') as f:
mylist = [item for item in readlines(f, 524288)]
これには、テキストを分割する前にコンテンツ全体をメモリに読み込む必要がないという利点もあります。
関連
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
[解決済み】Flaskのテンプレートが見つからない【重複あり
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
[解決済み】ImportError: sklearn.cross_validation という名前のモジュールがない。
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")
-
[解決済み】NameError: 名前 'self' が定義されていません。
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac