重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Pythonで下記の様なエラーが出ます。

Traceback (most recent call last):
File "/Users/xxxxxxxxi/bin/Python/m_HMC_618_5.py", line 82, in <module>
phi[imat,jmat] = float(read[2]) + float(read[3])*1j
^^^^^^^^^^
ValueError: could not convert string to float: '-6.644120930233857e-'

ファイルに書き込んだ4列目の文字列をfloatに変換している部分なのですが、
何故か、指数形式で書かれている文字列の何処かの箇所で上記の様なエラーが
発生してしまいます。指数形式で書かれている部分は他にも何箇所かあってその
箇所ではエラーにならないのですが、ある箇所でエラーになってしまいます。
エラーになってしまう箇所の指数形式の書き方が特におかしいと言うわけでは
ないのですが、なぜか何処かでランダムに転けてしまいます。
また、列の区切りは半角スペースで行っています。

理由が分かりかねています。ご経験のある方、御教示願えればと思います。

A 回答 (4件)

エラーは既に回答があるように、read[2]かread[3]の内容が'-6.644120930233857e-'という浮動小数点数として不適切な文字列なのでfloatがエラーを吐いています。


readという変数? を作っている部分を確認すべきでしょう。データに不適切な空白あるいは改行があるとか、列の読み込み文字数に制限があって20文字までで切れているとか。
    • good
    • 0

'-6.644120930233857e-' は浮動小数点を表す文字列として


形式がおかしいです。
元のテキストファイルがおかしいのか、
元のテキストファイルに問題がなければ、
テキストを読むコードに不具合があるのでしょう。

入力のテキストのフォーマットやそれを読むコードを晒さない限り
具体的なアドバイスは無理ですね。
    • good
    • 0

ファイルに書き込んだ4列目の文字列がどうなっているか確認してください。


-6.644120930233857e- となっているなら、その文字列が数値として誤っています。その場合は、数値として正しい文字列を書き込むように修正してください。

-6.644120930233857e-01 とか
-6.644120930233857e-1 とか
なっているなら、その文字列は数値として正しいです。
その場合は、read[2]かread[3]へその文字列を格納するときにデータの欠落が発生しています。(文字列の最後のe-XXのXXが欠落)
    • good
    • 0

そりゃまあ、'-6.644120930233857e-' は指数形式じゃあないわな。


変換の問題じゃなく、ファイルの読み込みの問題じゃない?
read[2] だか read[3] だかしらんけど、文字列がなんでこんな変なもの
になったか?をデバッグする話だと思われ。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A