从字符串中删除不同字符的巧妙方法是什么?例如,我有以下字符串需要转换为整数:
($12,990)
$21,434
Run Code Online (Sandbox Code Playgroud)
我使用以下代码工作正常,但有没有更笨重的方法来做同样的事情?
string = string.replace(",", "")
string = string.replace("$", "")
string = string.replace("(", "-")
string = string.replace(")", "")
int(string)
Run Code Online (Sandbox Code Playgroud)
编辑:我使用的是 Python 2.7。
你可以使用str.translate,例如
>>> "($12,990)".translate(str.maketrans({',': '', '$': '', '(': '-', ')': ''}))
'-12990'
Run Code Online (Sandbox Code Playgroud)
正如@AdamSmith 在评论中所述,您还可以使用 的(完整)三参数形式str.maketrans:
>>> translationtable = str.maketrans("(", "-", ",$)")
>>> "($12,990)".translate(translationtable)
'-12990'
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 python-2.x,则可以使用str.translate函数和string.maketrans函数:
>>> import string
>>> translationtable = string.maketrans('(', '-')
>>> "($12,990)".translate(translationtable, ',$)')
'-12990'
Run Code Online (Sandbox Code Playgroud)
或者使用 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'
Run Code Online (Sandbox Code Playgroud)