Pythonであるサイトにxhrした時に6.2E-7というように指数で値が取れます。
これを0.00000062として扱いたいのですが、どのようにすればよいでしょうか。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

float関数では、指数表現の文字列でも正しく数値に変換してくれます


a='6.2E-7'
b=float(a) #-> b=6.2e-07

既に数値になっているのでしたら、 6.2E-7は何もしなくても 0.00000062 として扱われます。
'0.00000062' という文字列にしたいのなら、 書式 % 値 で変換をしてください。
c= "%.10f" % b # c='0.0000006200'
    • good
    • 0
この回答へのお礼

返事が遅くなり申し訳ありません。

教えて頂いた通りの方法で出来ました。
ありがとうございました。

お礼日時:2014/11/08 18:05

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qpython初心者です。csvファイルを扱いたいんですが...

すいません、python初心者ですので、気長に聞いてくださいcsvファイルの10番目のカラムの人数を合計したんです。1行目のフィールドはカラム名なので飛ばして2行目から読み込みたいんですが、結果が出てきません。一応書いたプログラムは、

#!usr/bin/env python
import sys
import string

i = 0
for line in open('./data.csv').readlines():
item = string.split(line,',')
if item[9].isdigit():
i+=int(item[9])
print i

です。処理速度を早くしたいのでdictionaly化せずに行いたいんですが、誰かご教授願えませんか?

Aベストアンサー

次のような変更とdata.csvファイルを準備したところ動いているようです。

* #!usr/bin/env → #!/usr/bin/env
* forの次の行から行頭に空白を1文字入れて揃える
* 'i+='で始まる行だけ空白を+1文字余計に入れる

* data.csv
a,b,c,d,e,f,g,h,i,j,k
0,1,2,3,4,5,6,7,8,9,10
0,1,2,3,4,5,6,7,8,9,10

どんなエラーメッセージが表示されますか?

Qプログラムで入力した数値を変更したい場合はどのようにすればよいのでしょ

プログラムで入力した数値を変更したい場合はどのようにすればよいのでしょうか?
初めまして。現在Scilabを用いてプログラムを書いているのですが、入力変数が多いために、入力ミスをしたときに修正するプログラムを書こうとしています。たとえば、
for x=1:100
y(x)=input('y=');disp(y);
end;
という、100個変数を入力する場合を考えているのですが、変数を入力し間違えた場合に、最初からやり直すのは面倒なので、これを補うプログラムを考えてほしいのです><;
入力変数は毎回ことなるので、どこかに保存ということもできず・・・。入力をし間違えた場合にループを一つ戻るようにするにはどのようにすればよいのでしょうか?

Aベストアンサー

今までScilabを使ったことがなく作法など知りませんので参考と思ってください。

こういうので用は足せるかと思います。
・ループのカウントはforに任せず自前で行う。
・入力は一旦文字列で行う。
・入力がeだったらループ終了。
・入力がdだったらひとつまえのループに戻る。
・入力が数字だったら文字列を数値に変換して配列に値を入れて次のループへ。
・入力が上記以外だったら今のループを維持。

なぜeで終わりみたいなふうにするかというと、こうしておけば例えば入力する数値が100個だったとして、100個目を入れそこなった時でも修正できるからです。

y=[];
x=1;
while %t
in=input('y('+string(x)+')=','string');
if in <> ''
select in
case 'e'
break;
case 'd'
if x>1
x=x-1;
end
else
ierr=execstr('num=eval(in)','errcatch');
if ierr == 0
y(x)=num;
x=x+1;
end
end
end
end
disp(y);

今までScilabを使ったことがなく作法など知りませんので参考と思ってください。

こういうので用は足せるかと思います。
・ループのカウントはforに任せず自前で行う。
・入力は一旦文字列で行う。
・入力がeだったらループ終了。
・入力がdだったらひとつまえのループに戻る。
・入力が数字だったら文字列を数値に変換して配列に値を入れて次のループへ。
・入力が上記以外だったら今のループを維持。

なぜeで終わりみたいなふうにするかというと、こうしておけば例えば入力する数値が100個だったとして、100個...続きを読む

Qpython超初心者です(3時間目)。pythonで以下のようなランダ

python超初心者です(3時間目)。pythonで以下のようなランダム数列を生成させるにはどうしたらいいのでしょうか?

最終結果のイメージ(16進数8桁の数列x20行):
0 : c39a29eb
1 : b26cc9bb
2 : 4c494e47
...
19: 93c85836


以下のようにコードを組んでみたのですが、
> tmp = ws.join(list)
> TypeError: sequence item 0: expected string, int found
のようなエラーが出てしまいます。どうやら数字を連結しようとしてるのでダメなのかな?と思っています。

========================================
#! /usr/bin/python

import random
list = []
ws = ""

for i in range (20):
print i, ":",
for j in range(8):
list.append(random.randint(0,15))
tmp = ws.join(list)
print tmp
list = []
tmp = ""
========================================
※ printでは必ずスペースが入ってしまうので、それを嫌う場合配列に入れて、要素を連結させなくてはならない、とwebにあったので、その方向で試してみました。
※ また、ここではあくまでrandom を使用し、一文字(0,1,2,...E,F)づつ出力させたいと思っています。


なお、perlでは以下のように書くことができたのですが...
========================================
#! /usr/bin/perl

for($i=0; $i<20; $i++){
printf ("%-02s: ", $i);
for($j=0; $j<8; $j++){
printf("%x", int(rand(15)) );
}
print "\n";
}
========================================

※ んー第二言語としてpythonを学習してみていますが道のり険しそうです(やっぱrubyにしようか)...

宜しくお願い致します。

python超初心者です(3時間目)。pythonで以下のようなランダム数列を生成させるにはどうしたらいいのでしょうか?

最終結果のイメージ(16進数8桁の数列x20行):
0 : c39a29eb
1 : b26cc9bb
2 : 4c494e47
...
19: 93c85836


以下のようにコードを組んでみたのですが、
> tmp = ws.join(list)
> TypeError: sequence item 0: expected string, int found
のようなエラーが出てしまいます。どうやら数字を連結しようとしてるのでダメなのかな?と思っています。

========================================
#! /...続きを読む

Aベストアンサー

Pythonはインデントが重要なのですが、ここでは消されてしまいます。
全角スペースとか適当な文字を使って代用するようにしてください。

さて。
数値は文字列ではありません。
joinは文字列を連結するものですが、数値を自動で文字列化するようなことはしません。
Pythonでは、型付けは結構厳しいです。

ところで、そのPerlの中で %xを使って数値を文字列に変換していますよね。
Pythonでも同じように文字列化すればよいのです。
フォーマット文字列 % 単独の値、またはシーケンス
が,Perlの sprintf(フォーマット文字列, 値...) と同等ですので
list.append( "%X" % random.randint(0,15))
とすれば、listのは16進の文字列で格納されるので、joinで連結できます

#! /usr/bin/python
import random
# forの範囲などで使うなら、リストを作るrangeより、イテレータを作るxrangeの方が効率的
for i in xrange (20):
 list = []
 for j in xrange(8):
  list.append('%x' % random.randint(0,15))
# 後に使わないのなら、直接書いてもよいでしょう。
# 文字列リテラルも「オブジェクト」なので、下のjoinのような書き方もできます。
 print '%02d:%s' % (i, ''.join(list))

ちなみに、2.6以降ではprintの仕様変更がありましたので、そのPerlのスクリプトをPythonではこう書けます。

#! /usr/bin/python
from __future__ import print_function #2.6で3仕様のprintを使用するのに必要。3では不要
import random

for i in xrange(20):
# もとは"%-02s"だけど、これは文字列と数値の違いのないPerlだからできること
 print( "%02d:" % i , end='' )
 for j in xrange(8):
  print( "%x" % random.randint(0,15) , end='')
# endの指定がなければ改行付き。表示文字列指定がなければ改行だけ
 print( )

Pythonはインデントが重要なのですが、ここでは消されてしまいます。
全角スペースとか適当な文字を使って代用するようにしてください。

さて。
数値は文字列ではありません。
joinは文字列を連結するものですが、数値を自動で文字列化するようなことはしません。
Pythonでは、型付けは結構厳しいです。

ところで、そのPerlの中で %xを使って数値を文字列に変換していますよね。
Pythonでも同じように文字列化すればよいのです。
フォーマット文字列 % 単独の値、またはシーケンス
が,Perlの sprintf(フォーマッ...続きを読む

QPythonでコンソールをクリアするにはどうすればよいでしょうか?

Pythonでコンソールに出力するのは、printでよいのですが、
クリアするにはどうすればよいでしょうか?
また、コンソールをバックスペースで戻るようなこともしたいです。
因みに print "\b"はうまくいかなかったような・・・

Aベストアンサー

ちょっと調べたら、
・os.system("clear") (Windowsのコマンドプロンプトなら os.system("CLS") )と外部コマンドを呼び出す
・ANSIエスケープシーケンスを出力する
・cursesライブラリを使う

なかには
・W32APIを使う
http://d.hatena.ne.jp/m-hiyama/20091222/1261444695
というものもあり、一筋縄にはいかないようです。

画面消去が本当に必要かどうか、検討しなおしてみては?
文字の表示位置が重要なら、cursesを使うことになると思います。

なお、"\b"によるバックスペースは私のところではちゃんと動作しています
>>> print "ab\bc"
ac

使用している端末がバックスペースに対応していない、ということはありませんか?

Qpythonの初心者です!コマンドプロンプトでモジュールのロード python-izm 関数:tes

pythonの初心者です!コマンドプロンプトでモジュールのロード
python-izm
関数:testを呼び出しました
と表示したいのですが、
モジュールのロード
Traceback (most recent call last):
File "test02.py", line8, in <module>
if _name_ == ,"_main_":
NameError: name '_name_' is not defined
となってしまいどうしたらいいのか分からないのです。写真のどこが間違ってるか分からないのでだれか教えてください(´Д` )

Aベストアンサー

if _name_ == "_main_":

じゃなくって

if __name__ == "__main__"

じゃないんですかね?
(本とかじゃ分かりづらいですが、アンダーバーは_一つじゃなくって2つ__使います)


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

人気Q&Aランキング

おすすめ情報