-1

ここでどこが間違っているのかを理解するのに苦労しています。

元のファイルは次のとおりです。

python is a programming language that lets you WORK more quickly and integrate your systems more effectively. 
you can learn to use python and see almost immediate gains in PRODUCTIVITY and lower maintenance COSTS. 
it's very helpful for any field of study.

ファイルを取得して読み取り、文を大文字にし、大文字のロックを小文字に変更し、「それは」を「これは」に変更する関数を作成しようとしています。次に、ファイルを元に戻し、文の後にピリオドを追加します。新しいファイル文字列を「Edited.txt」という名前の .txt ファイルに書き込みます。

私のコードは次のとおりです。

 def edit(aFile):
   f = open(aFile, 'r')
   xs = f.readlines()
   f.close()
   g = open('happy.txt', 'w')
   for x in xs:
     x.capitalize()
     if x.isupper==1:
       x.lower()
     g.write(x)
   g.close()

私が得るエラーは「ファイルが見つかりません-happy.txt(アクセスが拒否されました)です。ファイルを読み込もうとしましたが、できませんでした。

ファイルがそこにあり、メディア パスがフォルダーに設定されていることを 100% 確信しています。

4

3 に答える 3

2
isupper

は True または False を返すメソッドなので、行は次のようになります。

if x.isupper():

いいえ

if x.isupper==1:

これがあなたの質問に答えているかどうかはわかりませんが、私たちが適切に答えるために、エラーについてもっと投稿する必要があります.

さらに、capitalize() や lower() などの Python 文字列メソッドの多くは、文字列のコピーを作成し、実際には元の文字列を変更しません。したがって、次の場合:

x = "TEST"

その後、呼び出し

y = x.lower()

x は "TEST" のままになり、y は "test" になります。

于 2013-07-24T20:38:06.967 に答える
0

このステートメントはそのままでは何もしません:

x.capitalize()

最初の文字が大文字で返されますxが、結果はどこにも保存されません。また、このステートメントの後、x は変更されません。の最初の文字を大文字にしたい場合は、次のxようにします。

x = x.capitalize()
于 2013-07-24T20:40:20.523 に答える
0

私が見ることができる最初の大きな間違いは、文字列メソッドを何にも割り当てずに実行していることです。文字列は不変なので、x.capitalize()何もしません(jh314が言ったように)。

他の人が言ったことに加えて、あなたのfor x in xs行は「ファイルのすべての行に対して、次のことを行ってください」と言っています。あなたのファイルは 1 行しかないように見えるので、すべてを 1 行で行おうとしています。

正規表現と文字列メソッドに関するドキュメントを参照してください。

http://docs.python.org/2/library/string.html

http://docs.python.org/2/library/re.html

行内の変更したい場所を特定するのに役立ちます。

于 2013-07-24T20:48:09.553 に答える