-1

長さ 4 のテキスト ドキュメント内のすべての単語を別の単語に置き換える必要があります。

たとえば、テキスト ドキュメントに「とても熱いスープを食べるのが好き」というフレーズが含まれている場合、「好き」、「とても」、「スープ」という単語は「何か」に置き換えられます。

次に、元のテキスト ドキュメントを上書きする代わりに、変更されたフレーズで新しいドキュメントを作成する必要があります。

これが私がこれまでに持っているものです:

def replacement():  
    o = open("file.txt","a") #file.txt will be the file containing the changed phrase
    for line in open("y.txt"):  #y.txt is the original file
        line = line.replace("????","something")  #see below
        o.write(line + "\n")
    o.close()

「????」を変えてみました のようなものに

(str(len(line) == 4)

しかし、それはうまくいきませんでした

4

4 に答える 4

1

これにより、他のソリューションでは使用されないように、余分なスペースが保持されますstr.split()

import re

exp = re.compile(r'\b(\w{4})\b')
replaceWord = 'stuff'
with open('infile.txt','r') as inF, open('outfile.txt','w') as outF:
    for line in inF:
        outF.write(exp.sub(replaceWord,line))

これは、正規表現を使用してテキストを置き換えます。ここで使用される正規表現には、3つの主要な部分があります。最初は単語の先頭に一致します:

\b

2番目の部分は、正確に4文字(すべて英数字と_)に一致します。

(\w{4})

最後の部分は最初の部分のようで、単語の終わりに一致します

\b
于 2012-11-09T19:22:42.970 に答える
1
with open('file.txt', 'a') as write_file:
    with open('y.txt') as read_file:
        for line in read_file.readlines():
            # Replace the needed words
            line = line.replace('????', 'something')
            write_file.write(line)
于 2012-11-09T18:29:28.757 に答える
1

something最初に、長さ 4 の単語が与えられた場合に戻り、それ以外の場合に与えられた単語を返す関数を作成しましょう。

def maybe_replace(word, length=4):
  if len(word) == length:
    return 'something'
  else:
    return word

次に、for ループを見てみましょう。各反復には、元のファイルの行があります。それを言葉に分けてみましょう。Python は、split使用できる関数を提供します。

   split_line = line.split()

デフォルトでは空白で分割されますが、これはまさに私たちが望んでいるものです。必要に応じて、さらにドキュメントがあります。

maybe_replace次に、すべての単語で関数を呼び出すリストを取得します。

  new_split_line = [maybe_replace(word) for word in split_line]

joinこれで、メソッドを使用してこれらを元に戻すことができます:

  new_line = ' '.join(new_split_line)

そして、それをファイルに書き戻します。

  o.write(new_line + '\n')

したがって、最終的な関数は次のようになります。

def replacement():  
  o = open("file.txt","a") #file.txt will be the file containing the changed phrase
  for line in open("y.txt"):  #y.txt is the original file
    split_line = line.split()
    new_split_line = [maybe_replace(word) for word in split_line]
    new_line = ' '.join(new_split_line)
    o.write(new_line + '\n')
  o.close()
于 2012-11-09T18:31:27.580 に答える
0

これは宿題のように思えるので、いくつかの重要な概念を次に示します。

ファイルを読み取るとlinesstrings. と呼ばれる文字列メソッドを使用して、 alineを a に分割できます。 . これにより、単語のリストが作成されます。 list.split()words = line.split()

現在、 alistiterableです。つまり、 for ループを使用して、一度に の 1 つの項目に対して操作を実行できますlist。どれくらいの長さかを確認したいwordので、ループを繰り返し処理しwordsて何かをする必要があります。を使用して単語の長さを確認する方法を理解するところまで来ましたlen(word)

また、最終的な情報を保存する場所も必要です。ループの外側では、list結果と.append()、進行中にチェックした単語を作成する必要があります。

line最後に、ファイル内のそれぞれに対してこれを行う必要があります。つまり、ファイルを反復処理 する2 番目の for ループです。

于 2012-11-09T18:27:51.303 に答える