![](/img/trans.png)
[英]How to use the str.translate() method from Python in objective c?
[英]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.