2017-07-14 14 views
0

私はPythonでAppStoreレビューの分析を扱っています。私は、特定のレビューから保存したい文章の位置を生成しました。 (60:75)。私は私のファイルの奇妙なXML形式のためにそれをしなければならなかった。同じ長さの文字列を維持しながら、Pythonの文字列から "/ xC3"のような特殊文字を削除するには

私がそれらを集めたいと思うとき、私はいくつかのエンコーディングの問題の位置が漂ったために考え出しました。問題が特殊文字(たとえばスペイン語の一部の文字 -/xC3)で発生することがわかりました。

私はそれらを取り除いていますが、同じ文字の位置と長さの文章を維持したいと思います。たとえば、 "é"を "e"に変更します。

dropbox.txt - ゲート開発

StartNodeが欲しかった文の最初の文字の位置で、最後の文字

import xml.etree.ElementTree as ET 

with open("Output/Reviews/dropbox.txt", 'r') as myfile: 
    data = myfile.read() 
tree = ET.parse("Output/Reviews/dropbox.xml") 
root = tree.getroot() 

positions = [] 

for AnnotationSet in root.findall("AnnotationSet"): 
    for Annotation in AnnotationSet: 
     positions.append((Annotation.attrib["StartNode"], Annotation.attrib["EndNode"])) 
for tuple in positions: 
    print data[int(tuple[0]):int(tuple[1])], tuple 
のエンドノードからxmlファイル - レビュー

dropbox.xmlのテキストファイル

例:

最初の段落の位置は正確ですが、2番目の段落の位置は1桁分先にシフトしました。

アップデート:あり、私は私の元 のレビューを書いてから1つのまたは2つの更新されており、これらの問題はまだ修正されていません。

Faltan algunas cosas AUNポルmejorarペロrelativamente ESブエナ

フォルダ内に移動して、 は、私がオフラインであることを フォルダ全体を必要とするとき、個々のファイルをオフラインで少し面倒であることを確認すること。

答えて

2

あなたはバイト文字列として扱いますが、それらの文字の中には2バイトで表されるものがあります。スライスするとバイト単位で表示され、文字数には対応しません。

あなたはおかげで、それが働いていたが、今、次のように絵文字が次の問題を引き起こしているようです

reviewunicode = reviewtext.decode('utf-8')

+0

のように、Unicode文字列にあなたの文字列を変換する必要があります。 [...]それは巨大ですあなたが電話にダウンロードする必要があるときの痛み <ここで1文字ずつ前方に移動> 誰かが私と写真を共有していて、アプリをダウンロードする必要があると言います。 [...] –

関連する問題