Pythonic方法删除字符串中的字符

时间:2017-07-12 22:30:54

标签: python string

从字符串中删除不同字符的简洁方法是什么?例如,我有以下需要转换为整数的字符串:

($12,990)
$21,434

我使用下面的代码可以正常工作,但实现同样的方法还不那么笨重吗?

string = string.replace(",", "")
string = string.replace("$", "")
string = string.replace("(", "-")
string = string.replace(")", "")
int(string)

编辑:我使用的是Python 2.7。

3 个答案:

答案 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))