嗨,我想知道我是否可以收拾我的代碼比我有更好的。更好的使用.replace和.strip的方法?蟒蛇
基本上答案將使用x.strip()
和x.strip("£")
和x.replace(",")
然後x = float(x) * 1.18
圖轉換成歐元是像x = "£1,094.99 "
林。
沒有辦法讓這個更有效?我是新手,所以我只是想知道。
嗨,我想知道我是否可以收拾我的代碼比我有更好的。更好的使用.replace和.strip的方法?蟒蛇
基本上答案將使用x.strip()
和x.strip("£")
和x.replace(",")
然後x = float(x) * 1.18
圖轉換成歐元是像x = "£1,094.99 "
林。
沒有辦法讓這個更有效?我是新手,所以我只是想知道。
一個很好的一個班輪我經常用的就是這個:
x = ''.join([c for c in x if c in '1234567890.'])
因此,像這樣:
x = "$1,094.99"
x = ''.join([c for c in x if c in '1234567890.'])
print x
會給你的輸出:
1094.99
然後你可以像你一樣使用你的float(x)* 1.18。我覺得這是一個很好的方法,因爲它是一些強大的。流浪的角色和美元符號而不是英鎊符號不應該阻止它的工作。
你可以取代它爲「」
float(data.replace(',','').replace('£',''))*1.18
這個答案也很好,我認爲如果你想確保只有英鎊和逗號被替換,但是如果你想去掉任何貨幣符號則更糟。另外我想象一些人會發現替換語法比「x for x in ...」更容易閱讀 – Scheme
雖然它沒有使用.split,但我總是找問題要搶(在這種情況下的數字)所有非分隔符串,值得使用正則表達式。你只需要找到非白色或'。'
import re
x = "£1,094.99 "
number = float(''.join(re.findall('\w+|\.',s)))
euro = number * 1.18
爲此,您可以用優雅和re
模塊decimal
,像這樣:
# -*- coding: utf-8 -*-
from re import sub
from decimal import Decimal
x = "£1,094.99"
value = Decimal(sub(r'[^\d.]', '', x))
print(value)
value_euro = float(value) * 1.18
print(value_euro)
這將導致:
1094.99
1292.0882
請問你的代碼工作的第一線? – alienware13user
@ alienware13user它基本上查看字符串x(c中的c用於x)中的所有字符,以及該字符是否在字符串'1234567890'中。那麼它會返回該字符。否則會跳過它。 – Scheme
啊謝謝 - 我知道我不打算評論謝謝。但由於:P – alienware13user