我正在使用以下网站的收入数据:https://nces.ed.gov/programs/digest/d17/tables/dt17_502.30.asp
这很凌乱,正在处理的任务是删除文本的标点符号,如下所示:
' High school completion\\1\\ ....................................;32,610;;(360);34,840;;(275);34,200;;(943);33,480;;(16);32,970;;(18);32,010;;(#);31,320;;(16);30,900;;(2);30,410;;(4);30,930;;(968);31,830;;(143);\n'
但是保留分号,因为稍后将使用它来分隔字段。
我要解决的方法是:
1)将#替换为“ 0”,因为它用于缺失值
行= row.replace(“#”,“ 0”)
2)创建一个字典以将所有标点符号映射为None或空(除分号以外)。
translation = dict((c,"") if c != ";" else (c,";") for c in string.punctuation )
3)进行翻译
这是不起作用的步骤:
row.translate(translation)
重新运行完全相同的输出:
' High school completion\\1\\ ....................................;32,610;;(360);34,840;;(275);34,200;;(943);33,480;;(16);32,970;;(18);32,010;;(0);31,320;;(16);30,900;;(2);30,410;;(4);30,930;;(968);31,830;;(143);\n'
答案 0 :(得分:4)
您缺少一步-使用str.maketrans
构建翻译表:
tab = text.maketrans(dict.fromkeys(string.punctuation.replace(';',''), ''))
text.translate(tab)
# ' High school completion1 ;32610;;360;34840;;275;34200;;943;33480;;16;32970;;18;32010;;;31320;;16;30900;;2;30410;;4;30930;;968;31830;;143;\n'