从字符串中删除不同字符的简洁方法是什么?例如,我有以下需要转换为整数的字符串:
($12,990)
$21,434
我使用下面的代码可以正常工作,但实现同样的方法还不那么笨重吗?
string = string.replace(",", "")
string = string.replace("$", "")
string = string.replace("(", "-")
string = string.replace(")", "")
int(string)
编辑:我使用的是Python 2.7。
答案 0 :(得分:4)
您可以使用str.translate
,例如
>>> "($12,990)".translate(str.maketrans({',': '', '$': '', '(': '-', ')': ''}))
'-12990'
正如@AdamSmith在评论中所述,您也可以使用str.maketrans
的(完整)三参数形式:
>>> translationtable = str.maketrans("(", "-", ",$)")
>>> "($12,990)".translate(translationtable)
'-12990'
如果你正在使用python-2.x,可以使用str.translate
函数和string.maketrans
函数:
>>> import string
>>> translationtable = string.maketrans('(', '-')
>>> "($12,990)".translate(translationtable, ',$)')
'-12990'
或使用Python-2.x上的unicodes,您需要unicode-ordinal到unicode-ordinal / string或None:
>>> unicode_translation_table = {ord(u','): None, ord(u'$'): None, ord(u'('): ord(u'-'), ord(u')'): None}
>>> u"($12,990)".translate(unicode_translation_table)
u'-12990'
答案 1 :(得分:0)
好吧,你可以依靠一个循环让它不那么难看:
FORBIDDEN_CHARS = { # Model: { "Replacer" : "Replacees", ... }
"" : ",$)",
"-" : "("
}
for replacer in FORBIDDEN_CHARS:
for replacee in FORBIDDEN_CHARS[replacer]:
mystr = mystr.replace(replacee, replacer)
答案 2 :(得分:-1)
''.join(string.strip('(').strip(')').strip('$').split(','))
或
''.join(filter(str.isdigit, string))