簡體   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