嗨,我想知道我是否可以收拾我的代码比我有更好的。更好的使用.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