Verfasst: Freitag 26. Oktober 2007, 12:56
Schau Dir mal die `translate()`-Methode auf Zeichenketten an.
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Code: Alles auswählen
>>> import string
>>> s = "asldfk{sdf{sdf}ASd[AS]2lkj(h342346534lk)6j.erZZZ"
>>> transtable = string.maketrans("Z", "A")
>>> deletechars = string.punctuation + string.digits
>>> print s.translate(transtable, deletechars)
asldfksdfsdfASdASlkjhlkjerAAA
Code: Alles auswählen
>>> transtable = string.maketrans("", "")
Code: Alles auswählen
[w for w in line.strip().split()]
Code: Alles auswählen
line.strip().split()
Mmh, das codecs-Modul bringt anscheinend auch nur Helfer fuer das Umwandeln einzelner Zeichen in einzelne Zeichen mit (charmaps). Den Rest muss man da anscheinend auch von Hand machen, bringt also nichts.Rebecca hat geschrieben:eventuell kann man da seinen eigenen Codec fuer schreiben
In Python 3.0 wird man Codecs auch nur für Zeichen -> Zeichen verwenden können, daher ist das auch nicht zukunftssicher.Rebecca hat geschrieben:Mmh, das codecs-Modul bringt anscheinend auch nur Helfer fuer das Umwandeln einzelner Zeichen in einzelne Zeichen mit (charmaps).
Es geht auch direkt und ohne Umwege.Leonidas hat geschrieben:Direkt nicht, indirekt schon. Habe aber gerade keine UCS2-Version von Python zur Hand um das zu prüfen.keppla hat geschrieben:Das intern verwendete encoding ist afaik nicht ermittelbar (ist auch gut so), und es kann eben auch mal utf32 sein.
Code: Alles auswählen
>>> import sys
>>> sys.maxunicode
1114111
Also kein decode("bz2") mehr?Leonidas hat geschrieben:In Python 3.0 wird man Codecs auch nur für Zeichen -> Zeichen verwenden können, daher ist das auch nicht zukunftssicher.
Nein:Rebecca hat geschrieben:Also kein decode("bz2") mehr?
http://www.artima.com/weblogs/viewpost.jsp?thread=208549 hat geschrieben:We are adopting a slightly different approach to codecs: while in Python 2, codecs can accept either Unicode or 8-bits as input and produce either as output, in Py3k, encoding is always a translation from a Unicode (text) string to an array of bytes, and decoding always goes the opposite direction. This means that we had to drop a few codecs that don't fit in this model, for example rot13, base64 and bz2 (those conversions are still supported, just not through the encode/decode API).
Code: Alles auswählen
# -*- coding: cp1252 -*-
import time
import sys
def readWordlist(filename):
words = set()
for line in open(filename, "r"):
words.update(set([w for w in line.strip().split()]))
return words
def main():
start = time.time()
wordList = readWordlist("vollform.txt")
data = readWordlist("story.txt")
positiv = ["J" , "j", "y", "yes", "jap", "Y", "Yes", "Jo"] #(für erweiterung)
negativ = ["nein","ne","Nein","Ne","noe","Noe","n","N","nE","nope"] #(für erweiterung)
for line in data:
words = line.strip() \
.replace('Ae', 'Ä') \
.replace('Oe', 'Ö') \
.replace('Ue', 'Ü') \
.replace('.', '') \
.replace('"', '') \
.replace('!', '') \
.replace('?', '') \
.replace('-', '') \
.replace(',', '') \
.replace('“', '') \
.replace('”', '') \
.replace('_', '') \
.replace(';', '') \
.replace('(', '') \
.replace(')', '') \
.replace('[', '') \
.replace(']', '') \
.replace('}', '') \
.replace('=', '') \
.replace('{', '') \
.replace(':', '') \
.replace("'", '' ) \
.replace("1", '' ) \
.replace("2", '' ) \
.replace("3", '' ) \
.replace("4", '' ) \
.replace("5", '' ) \
.replace("6", '' ) \
.replace("7", '' ) \
.replace("8", '' ) \
.replace("9", '' ) \
.replace("0", '' ) \
.split()
for w in words:
d = open("story.txt", "a")
v = open("vollform.txt", "a")
f = open("wordsnotinvollform.txt", "a")
g = open("wordsinvollform.txt", "a")
wl = w + "\n"
if w in wordList:
g.writelines(wl)
else:
edit = raw_input("Möchten Sie den Begriff " + w + " zum Wörterbuch hinzufügen?")
if edit in positiv:
v.writelines(wl)
print w + " wurde zum Wörterbuch hinzugefügt!"
elif edit in negativ:
edit2 = raw_input("Möchten Sie den Begriff " + w + " im Text ändern?")
if edit2 in positiv:
editw = raw_input("Schreiben Sie das Wort bitte richtig.")
w = editw
d.write(w)
elif edit2 in negativ:
f.writelines(w)
print time.time() - start, "sec"
f.close()
g.close()
if __name__ == "__main__":
main()