2013-03-22 14 views
9

mycorpus.txtApostroph Drehen in x92

Human where's machine interface for lab abc computer applications 
A where's survey of user opinion of computer system response time 

stopwords.txt

let's 
ain't 
there's 

Der folgende Code

corpus = set() 
for line in open("path\\to\\mycorpus.txt"): 
    corpus.update(set(line.lower().split())) 
print corpus 

stoplist = set() 
for line in open("C:\\Users\\Pankaj\\Desktop\\BTP\\stopwords_new.txt"): 
    stoplist.add(line.lower().strip()) 
print stoplist 

folgende Ausgabe

ergibt
set(['a', "where's", 'abc', 'for', 'of', 'system', 'lab', 'machine', 'applications', 'computer', 'survey', 'user', 'human', 'time', 'interface', 'opinion', 'response']) 
set(['let\x92s', 'ain\x92t', 'there\x92s']) 

Warum springt der Apostroph im zweiten Satz in \ x92?

+1

Verwenden Sie niemals Microsoft-Editoren, wenn Sie ASCII-Texte schreiben möchten. Wenn Sie sie verwenden möchten, müssen Sie mit cp1252 umgehen (was auch das "Anführungszeichen" enthält). – Bakuriu

Antwort

9

Der Codepunkt 92 (hex) in der Fenster-1252-Codierung ist der Unicode-Codepunkt 2019 (hex), der 'RECHTE EINZELZITATIONSMARKE' ist. Das sieht sehr nach einem Apostroph aus und ist wahrscheinlich der eigentliche Charakter, den Sie in stopwords.txt haben, was ich aufgrund der Art, wie Python interpretiert hat, in Windows-1252 oder einer Kodierung mit ASCII- und Codepunktwerten kodiert hat .

'vs'

+0

dann im ersten Satz warum zeigt es "wo ist" statt "wo \ x92s" ?? –

+0

@ PankajSinghal: Wahrscheinlich, weil Sie wirklich das ASCII-Apostroph-Zeichen in der ersten Datei haben. Um dies zu überprüfen, verwenden Sie ein Werkzeug wie Hexdump, um die tatsächlichen Bytes in Ihren beiden Dateien zu überprüfen. –

+0

ya, ich sehe da ist ein Unterschied in den Charakteren. Also, was soll ich tun, damit es wie "ist nicht" und nicht "ain \ x92t" gelesen wird? –