0
savetonotherfile.write(
        openfileagain.read().replace(
            "b'<HTML>\n<HEAD>\n<TITLE> Euro Millions Winning Numbers</TITLE>\n<BODY>\n<PRE> Euro Millions Winning Numbers\n\nNo., Day,DD,MMM,YYYY, N1,N2,N3,N4,N5,L1,L2,  Jackpot,   Wins\n",
            '').replace(
            "\n<HR><B>All lotteries below have exceeded the 180 days expiry date</B><HR>No., Day,DD,MMM,YYYY, N1,N2,N3,N4,N5,L1,L2,  Jackpot,   Wins\n",
            '').replace(
            "\n\nThis page shows all the draws that used any machine and any ball set in any year.\n\nData obtained from http://lottery.merseyworld.com/Euro/\n</PRE>\n</BODY></HTML>\n'",
            ''))

上記の行を使用して、テキストファイルから、削除するテキスト、 b'<HTML>\n<HEAD>\n<TITLE> Euro Millions Winning Numbers</TITLE>\n<BODY>\n<PRE> Euro Millions Winning Numbers\n\nNo., Day,DD,MMM,YYYY, N1,N2,N3,N4,N5,L1,L2, Jackpot, Wins\n562, Fri, 8,Feb,2013, 09,11,14,34,44,10,11, 27886637, 0\n561, Tue, 5,Feb,2013, 06,25,31,40,45,06,07, 19070109, 0\n560, Fri, 1,Feb,2013, ...数値、削除するテキストの形式でテキストを削除しようとしています。は.replace()何も実行していないか、少なくとも書き込みファイルに書き込まれる内容は読み取りファイルと同じです。私は何を間違えましたか?また、日付の後のコンマまでの長整数とそれに続くテキストを削除したいのですが、最も単純なことすら達成できないため、そのハードルから始めていません。

4

3 に答える 3

0

テキストの複雑な操作の場合、正規表現を使用する必要があるという証拠があります。モジュール
を勉強することをお勧めします。replace()reをいじくり回すよりも満足感が得られます

あなたが与えたコードに関して、実行はそれを行います:
-ハンドラーのファイル内のテキストを取得しますopenfileagain:文字列#1を作成します
-このテキストの一部を置き換えます、この文字列#1のID EST:新しい文字列#2を作成します
-テキストの2番目の部分を置き換える、つまり、文字列#2に存在する上記の部分を置き換える:3番目の文字列#3を作成します-3
番目の部分を置き換える、つまり、文字列#3に存在するこの部分を置き換える:文字列#4を作成します。

正規表現を使用する場合、置き換える3つの部分で構成される情報を指定すると、remachineryは文字列#2と#3を通過することなく、文字列#1から同じ文字列#4を直接作成します。

于 2013-02-11T16:36:03.560 に答える
0

rの最初の引数の文字列リテラルの前に追加しますreplace。またはに変更\n\\nます。

于 2013-02-11T14:51:27.650 に答える
0

このようにhtmlを操作するのはあまり良い考えではありません。通常は、beautifulsoupなどのhtml解析モジュールを使用することをお勧めします(htmlであると仮定します。以下の私の編集を参照してください)。いずれにせよ、コードを小さなステップに分割し、長い置換文字列を除外すると、バグをはるかに簡単に見つけることができます。例えば:

replace_map = (('first string', 'replace with this'),
               ('second string', 'replace the second with this'))

with open(inputfilename, 'rt') as infile:
    output = infile.read()
    for fromstr, tostr in replace_map:
        output = output.replace(fromstr, tostr)

with open(outputfilename, 'wt') as outfile:
    outfile.write(output)

編集: 私の答えを投稿した後、あなたがフォームのテキストを解析しているように見えることに気づきました"b'<html code/>'" これは正しいですか?Pythonバイトオブジェクトを説明する文字列があるようです。それが本当にあなたがしていることであるなら、html解析はあなたを助けませんが、なぜあなたがそれをしているのか真剣に質問し、それが最終結果を達成するための最良の方法であるかどうかを決定することをお勧めします。

于 2013-02-11T14:53:46.100 に答える