我正在用Python编写一些代码,我需要从价格中提取货币符号。所以,
cost = $56.78
我需要获得' $'。
在这些论坛上,我找到了如何提取数字而不是货币符号。我是regexes的新手,所以非常感谢你的帮助。
它可以是任何货币,而不仅仅是美元,但我想这将是字符串中的第一个字符..
答案 0 :(得分:4)
>>> def get_symbol(price):
import re
pattern = r'(\D*)\d*\.?\d*(\D*)'
g = re.match(pattern,price).groups()
return g[0] or g[1]
>>> get_symbol('$12.5')
'$'
>>> get_symbol('12.5USD')
'USD'
答案 1 :(得分:4)
匹配所有货币符号的实际模式为\p{Sc}
。但是python的默认re
模块不支持这个正则表达式。但是外部regex
模块将支持许多PCRE正则表达式。
>>> cost = '$56.78'
>>> import regex
>>> regex.findall(r'\p{Sc}', cost)
['$']
或强>
只需通过re.sub
函数用空字符串替换数字或空格。
>>> def get_symbol(price):
return re.sub(r'\d+(?:,\d+)*(?:\.\d+)?|\s+', '', price)
>>> get_symbol('EUR 10,000.00')
'EUR'
>>> get_symbol(' $ 12.5')
'$'
>>> get_symbol('12.5 USD')
'USD'
OR
保持简单。
>>> def get_symbol(price):
return re.sub(r'[\d,.\s]', '', price)
>>> get_symbol('EUR 10,000.00')
'EUR'
>>> get_symbol(' $ 12.5')
'$'
>>> get_symbol('12.5 USD')
'USD'
答案 2 :(得分:0)
如果cost = '$56.78'
你只需要cost[0]
来获取"字符串的第一个字符":
>>> cost = $56.78 #<-- you can't do this cause its not a valid string
SyntaxError: invalid syntax
>>> cost = '$56.78' #valid string
>>> cost[0]
'$'
答案 3 :(得分:0)
假设费用是字符串值,我会执行以下操作:
cost = '$56.78';
currency = cost[:1]
print(currency)
只需获取费用字符串中的第一个值即可获得货币。
你也可以这样做:
currency = cost[0]
答案 4 :(得分:0)
我能想到的最简单的方法是从字符串中删除任何非货币符号字符
<强>实施强>
def get_symbol(price):
import string
delete_chars = dict((ord(char), None) for char in string.digits + u" ,.+-")
price = unicode(price).translate(delete_chars)
try:
return price.decode('ascii').encode('ascii')
except (UnicodeDecodeError,UnicodeEncodeError):
return price
<强>演示强>
>>> print get_symbol(u' \u20B9 12.5')
₹
>>> get_symbol(u' \u20B9 12.5')
u'\u20b9'
>>> get_symbol('$12.5')
'$'
>>> get_symbol('12.5USD')
'USD'
>>> get_symbol('EUR 10,000.00')
'EUR'
>>> get_symbol(' $ 12.5')
'$'