2016-04-22 14 views
-1

私は掻き集めたフロートをどのように追加しますか?整数を表すスクラップ文字列を追加するにはどうすればよいですか?

for post in posts: 
    numberOfItems = numberOfItems + 1 
    print(numberOfItems) 
    value = float(re.sub(r"[^\d.]", "", post.text)) 
    print("Chaos orbs: %s" % value) 
    print(value) 
この、印刷(値1 +値2 +値3)と同様

しかし、それは私が知っていることはありませんランダムな量になりますので、私は、変数

+0

あなたは 'post.text'の例を与えることができますか?または、少なくともあなたが計算した 'value'が正しい結果を返すことを確認しますか? – Alexander

答えて

3

使用sum()をすることはできません。

for post in posts: 
    ... # rest of code snippet you posted 

print(sum(float(re.sub(r"[^\d.]", "", post.text)) for post in posts)) 

forループの外側にすべての値が追加され、合計が出力されます。あなたはこれを達成したい

summed_values = 0 
for post in post: 
    ... # rest of code snippet you posted 
    summed_values += value 
+0

ありがとう、どのように私はそれを分けるだろうか? – Nevermind123

+0

@ Nevermind123何が分かれていますか?合計値? 'summed_value/some_divisor'のように、通常のように合計値を除算するだけです。最初の方法を使用している場合は、 'sum(...)/ some_divisor'の代わりに' sum'呼び出しを分割してください。あなたが質問した質問の性格に関係しないフォローアップを計画している場合は、別の質問として質問してください。そうすれば、より多くの人々があなただけでなく、私を助けることができます:) –

1

を行います:についてのあなたのループのために、既存の使用したい場合は


また、何とか二回反復を避けるために、どのように

post="1.0 2.0 3.0\n 1.5 2.3" 
print sum(map(float,post.split())) 
1

それはありますあなたが掻いているものは明確ではありませんが、数値を抽出する必要があります:

import re 

s = "abc 12.25 def 20 df20.5 $10,000.50" 

>>> re.findall(r"([\d.?]+)", re.sub(",", "", s)) 
['12.25', '20', '20.5', '10000.50'] 

この正規表現は、文字列からカンマを削除し、その結果を10進数(.?)がある場合とない場合があるすべての数字(\d)を見つける別の正規表現に渡します。

整数文字列のリスト

を簡単に要約することができます:あなたはその後、外側のループの総

>>> sum(float(n) for n in re.findall(r"([\d.?]+)", re.sub(",", "", s))) 
10053.25 

は:

total_sum = 0 
for post in posts: 
    ... 
    total_sum += sum(float(n) for n in re.findall(r"([\d.?]+)", re.sub(",", "", s))) 
    ... 
関連する問題