2017-02-09 13 views
1

このプログラムを修正して、解凍ファイルから句読点を削除する必要があります。たとえば、元のテキストファイルを解凍すると、単語と句読点の間にスペースがあります。Pythonでテキストファイルを圧縮および解凍する

例:cheese ,

は、コードが動作しない理由は、if文の後にインデントされcheese,

def RemoveSpace(ln): #subroutine used to remove the spaces after the punctuation 
    line = ""  
    line2 = "" 
    puncpst = [] 
    for g in range(1, len(line)): 
     if line[g] == "." or line[g] == "," or line[g] == "!" or line[g] == "?": 
      puncpst.append(g) #get the positions of punctuation marks in a list 
    for b in range(len(line)): 
     if b + 1 not in puncpst: 
     line2 = line2 + line[b] 
    return line2 
+0

EFのRemoveSpace(LN):#subroutineは句読点 行の後にスペースを削除するために使用さ= "" LINE2 =」Anがv.coder @からリードして、バージョンを改善し、このようなことかもしれません" puncpst = [] gの範囲(1、len(line)): if line [g] =="。 "またはライン[g] == "、"ライン[g] == "!"またはライン[g] == "?": puncpst.append(g)#リスト内の句読点の位置を範囲内で取得する bの範囲(len(行)): b + 1がpuncpstにない場合: line2 = line2 + line [b] return line2 – Manal

+0

プログラムが正しくフォーマットされていることを確認してください。 Pythonは非常に特殊です。それに加えて、私はあなたのプログラムが句読点の前にスペースがあることをどのようにチェックするのか分かりません。 – quamrana

答えて

0

を返す必要があります。それを処理するための別の方法は、直接文字列にスペースを置き換えることです

if b+1 not in puncpst: 
    line2 = line2+line[b] 

line.replace(" .",".") 
line.replace(" ,",",") 
0

プログラムは、このようにする必要がありますようですね:

def RemoveSpace(line): 
    puncpst = [] 
    for g in range(1, len(line)): 
     if line[g] == "." or line[g] == "," or line[g] == "!" or line[g] == "?": 
      puncpst.append(g) #get the positions of punctuation marks in a list 
    ret = "" 
    for b in range(len(line)): 
     if b + 1 not in puncpst: 
      ret += line[b] 
    return ret 
以下のようにインデントを修正してください

オリジナルはdef RemoveSpace(ln):でした。ここではlnを使用していませんでした。

def RemoveSpace2(line): 
    punctuation = ['.', ',', '!', '?'] 
    for p in punctuation: 
     original = ' ' + p 
     line = line.replace(original, p) 
    return line 
関連する問題