繁体   English   中英

str.translate方法未替换

[英]str.translate method is not replacing

我正在使用来自此站点的收入数据: 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'

您缺少一步-使用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'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM