Na przykład:Jak usunąć całą interpunkcję w ciągu znaków? (Python)
asking="hello! what's your name?"
Czy mogę to zrobić?
asking.strip("!'?")
Na przykład:Jak usunąć całą interpunkcję w ciągu znaków? (Python)
asking="hello! what's your name?"
Czy mogę to zrobić?
asking.strip("!'?")
Naprawdę prosta implementacja jest:
out = "".join(c for c in asking if c not in ('!','.',':'))
i dodajemy żadnych innych rodzajów znaków interpunkcyjnych.
Bardziej skutecznym sposobem byłoby
import string
stringIn = "string.with.punctuation!"
out = stringIn.translate(stringIn.maketrans("",""), string.punctuation)
Edit: Jest kilka dyskusji na temat efektywności wdrożeń i innych tutaj: Best way to strip punctuation from a string in Python
'strip()' nie będzie działać. Zobacz http://docs.python.org/2/library/stdtypes.html#str.strip –
@BrendenBrown Naprawdę masz rację. Pół roku bez patrzenia na pytona i co wiesz. Wstydliwa edycja. –
Do usunięcia możesz uprościć ostatni wiersz do 'out = stringIn.translate (None, string.punctuation)' (zobacz https://docs.python.org/2/library/stdtypes.html#str.translate) – asmaier
import string
asking = "".join(l for l in asking if l not in string.punctuation)
filtr z string.punctuation
.
Działa to, ale mogą istnieć lepsze rozwiązania.
asking="hello! what's your name?"
asking = ''.join([c for c in asking if c not in ('!', '?')])
print asking
Nie potrzebujesz wewnętrznej listy w tym scenariuszu, a to spowoduje zwrócenie '' hellowhat'sychourname''. –
@BurhanKhalid Twoja prawidłowa lista wewnętrzna nie jest potrzebna, ale wynik jest poprawny. –
Gazy nie będzie działać. Usuwa tylko początkowe i końcowe instancje, nie wszystko w dniach: http://docs.python.org/2/library/stdtypes.html#str.strip
zabawy z filtrem:
import string
asking = "hello! what's your name?"
predicate = lambda x:x not in string.punctuation
filter(predicate, asking)
. Ważne jest, aby owinąć 'list()' wokół całej funkcji 'filter()', jeśli używasz Pythona 3.x, ponieważ wiele wbudowanych funkcji nie zwraca już 'list', ale specjalnych obiektów' iterable'. Wydaje się też, że przeoczyłeś wstawianie 'input' (lub' raw_input' dla Python 2.x) wokół napisu w drugiej linii i powinieneś umieścić coś w rodzaju 'asking = ...' dla ostatniej linii. – SimonT
Wygląda na to, że to podejście jest odradzane w 3.x: http://stackoverflow.com/questions/13638898/how-to-use-filter-map-andredred-in-python-3-3-0 –
'filter 'jest brzydki i powolny, kiedy musisz użyć' lambda' z nim, niestety twoją alternatywą jest ''' .join (ifilterfalse (częściowe (zawiera, interpunkcja), pytające))' – jamylak
masz spojrzał na http://stackoverflow.com/questions/3939361/remove-specific-characters -z-strun-w-python? –