2017-07-06 1 views
3

2つの浮動小数点数と3つの文字数からなるタプルを1つの文字列に変換しようとしているので、file.write()では使用できませんタプルを受け入れる。浮動小数点数とテキストで構成されるタプルを1つの文字列に変換する

testr = 'you went' ,speed ,'mph and stopped in' ,stop ,'meters' 
test = open('testresults.txt' ,'w') 
test.write(testr) 
test.close() 

私はそれを使用format私にこの

test.write(testr) 
TypeError: must be str, not tuple 

答えて

1

他の答えとは違って、これはあなたの提案タプルかかります。

testr = 'you went' ,speed ,'mph and stopped in' ,stop ,'meters' 
test = open('testresults.txt' ,'w') 
test.write(" ".join(str(i)for i in testr)) 
test.close() 

を唯一の3行目はあなたのコードと異なっているとして、ここでは説明を行く:

最初str(i)for i in testr

for -loopはPythonでlist comprhensionとして知られています。あなたのtestrタプルを反復して値を1つずつ返します。 str(i)はタイプキャストで、iを文字列に変換しようとします。これはあなたのタプルのように必要です。いくつかのエントリはString型であり、いくつかの変数はある種の型の番号です。FloatまたはIntegerです。さらに読むためにstr(),float()およびint()を参照してください。そして、" ".join(...)

:これは名前sugestsとして、文字列のリストやタプルを取り、文字列型の関数である

は、それが一緒にそれが作用する部分文字列の前の部分で区切られたジョインドット(" ")。これは私にとってはいつもちょっと変わった感じがするかもしれませんが、おそらくそれは非常に便利な機能です!

こちらがお役に立てば幸いです。

+0

ありがとうございました!これがどのように機能するのか説明できますか?だから私はこれを使って他のやり方、あるいは私が作った他のプロジェクトでも働くことができます。 –

2

を与えるプログラムを実行しようとするたび:

testr = 'you went {} mph and stopped in {} meters'.format(speed, stop) 
0

ありがたいString

test.write(str(testr)) 
+1

これは、タプルの視覚的表現を作成するだけです。クリーンな文章... – Kraay89

0

、のpythonに変換3.6を作る私たちのために非常に簡単で読みやすいS:

testr = f'you went {speed} mph and stopped in {stop} metres' 
test = open('testresults.txt' ,'w') 
test.write(testr) 
test.close() 

はそうでない場合は、同じことを別の回答で述べたようにstring.format(*args)を使用することによりacheivedされます。

+0

とはどのようにpython2? – Netwave

関連する問題