Jak mogę usunąć znaki spoza zestawu ASCII, ale pozostawić kropki i spacje za pomocą Pythona?
Pracuję z plikiem .txt. Potrzebuję ciągu tekstu z pliku bez znaków spoza zestawu ASCII. Jednak chcę zachować spacje i kropki. Obecnie też je rozdzieram. Oto kod:
def onlyascii(char):
if ord(char) < 48 or ord(char) > 127: return ''
else: return chardef get_my_string(file_path):
f=open(file_path,'r')
data=f.read()
f.close()
filtered_data=filter(onlyascii, data)
filtered_data = filtered_data.lower()
return filtered_data
Jak zmienić onlyascii (), aby zostawić spacje i kropki? Myślę, że nie jest to zbyt trudne, ale nie mogę tego rozgryźć.
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
7 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
string.printable
http://docs.python.org/library ... table, np .:
string.printable na moim komputerze zawiera:
Anonimowy użytkownik
Potwierdzenie od:
Edytować
:
Python3: str - & > bajt - & > str
Python2: unicode - > str - > unicode
Python2: str - & > unicode - & > str (dekoduj i koduj odwrotnie)
Anonimowy użytkownik
Potwierdzenie od:
re.sub(r'[^\x00-\x7f]',r'', your-non-ascii-string)
Zobacz więcej przykładów tutaj
http://stackoverflow.com/quest ... 79244
https://coderoad.ru/20078816/
Anonimowy użytkownik
Potwierdzenie od:
Cofnij się o krok, pomyśl trochę i zmień swoje pytanie, aby powiedzieć nam, co próbujesz zrobić, nie wspominając o słowie ASCII i dlaczego uważasz, że znaki ord (char) & > = 128 są ignorowane. Ponadto: która wersja Pythona? Jakie jest kodowanie danych wejściowych?
Zwróć uwagę, że Twój kod odczytuje cały plik wejściowy jako jedną linię, a Twój komentarz („świetne rozwiązanie”) do drugiej odpowiedzi sugeruje, że nie przejmujesz się nowymi wierszami w danych. Jeśli twój plik zawiera dwie takie linie:
wynik to ... czy tego naprawdę chcesz?
Szersze rozwiązanie obejmowałoby:
Anonimowy użytkownik
Potwierdzenie od:
To wróci
123456790 ABC#%? .()
Anonimowy użytkownik
Potwierdzenie od:
jest to równoważne z (odpowiedź z @jterrace), z wyjątkiem braku śladów i tabulatorów ('\ t', '\ n', '\ x0b', '\ x0c' i '\ r'), ale nie pasuje do zakresu Twojego pytania
Anonimowy użytkownik
Potwierdzenie od:
Lista jednopłaszczyznowych inspiracji inspirowanych rozdziałem 2: