2012-09-15 87 views
14

Tôi muốn THAY THẾ (và không XÓA) tất cả ký tự dấu chấm câu bằng "" trong một chuỗi trong python. Có một cái gì đó hiệu quả của hương vị này:làm thế nào để thay thế dấu câu trong một chuỗi python?

text = text.translate(string.maketrans("",""), string.punctuation) 

nhờ đăng ký

+0

s = s.replace ('cũ', 'mới') –

+0

có thể trùng lặp của [Cách tốt nhất để tách dấu chấm câu khỏi chuỗi bằng Python] (http: // stackoverf low.com/questions/265960/best-way-to-strip-punctuation-from-a-string-in-python) –

+0

sự khác nhau giữa REMOVE so với REPLACE là gì? – wroniasty

Trả lời

36

câu trả lời này là dành cho Python 2 và sẽ chỉ làm việc cho các chuỗi ASCII:

Mô-đun chuỗi chứa hai điều sẽ giúp bạn: danh sách các dấu chấm câu char các diễn viên và chức năng "maketrans". Dưới đây là cách bạn có thể sử dụng chúng:

import string 
replace_punctuation = string.maketrans(string.punctuation, ' '*len(string.punctuation)) 
text = text.translate(replace_punctuation) 
+2

Đây là giải pháp nhanh nhất, dễ dàng đánh bại tùy chọn biểu thức chính quy. –

+0

cảm ơn, đây là những gì tôi đã loking cho :) – register

+0

Đến nay câu trả lời tốt nhất - nhanh chóng và đầy đủ. :-) – ProfVersaggi

9

giải pháp thay đổi từ Best way to strip punctuation from a string in Python

import string 
import re 

regex = re.compile('[%s]' % re.escape(string.punctuation)) 
out = regex.sub(' ', "This is, fortunately. A Test! string") 
# out = 'This is fortunately A Test string' 
+0

Làm thế nào bạn giữ các dấu nháy đơn, ví dụ như trong từ không? Tôi không muốn các dấu nháy bị lột ra để tôi bị bỏ quên. –

+0

Bạn có thể xóa dấu nháy đơn khỏi string.punctuation (đây chỉ là một chuỗi chứa tất cả các ký tự dấu chấm câu). 'string.punctuation.replace (" '"," ")' dẫn đến ''!" # $% &() * +, -./:; <=>? @ [\\]^_ '{|} ~ " – Gregor

+0

Cảm ơn! Điều đó làm việc. –

0

thay thế bằng ''? sự khác biệt giữa việc dịch tất cả ';' vào '' và xóa tất cả ';'? Đây là xóa tất cả ';'

s = 'dsda;;dsd;sad' 
table = string.maketrans('','') 
string.translate(s, table, ';') 

và bạn có thể làm thay thế của bạn với dịch

+0

ai biết tại sao tôi không thể sử dụng mã kiểu đôi khi? – cheneydeng

0

Bằng cách cụ thể của tôi, tôi gỡ bỏ "+" và "&" từ danh sách dấu chấm câu:

all_punctuations = string.punctuation 
selected_punctuations = re.sub(r'(\&|\+)', "", all_punctuations) 
print selected_punctuations 

str = "he+llo* ithis& place% if you * here @@" 
punctuation_regex = re.compile('[%s]' % re.escape(selected_punctuations)) 
punc_free = punctuation_regex.sub("",str) 
print punc_free 

kết quả: ông + llo ithis & đặt nếu bạn ở đây

Các vấn đề liên quan