• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:pythonで実体参照文字を直す方法)

pythonで実体参照文字と文字参照を修正する方法

このQ&Aのポイント
  • pythonで実体参照文字や文字参照を修正する方法を教えてください。特定の文字がうまく修正されない場合の対処法も知りたいです。
  • python2.7で実体参照文字や文字参照を修正する方法を教えてください。特定の文字がうまく修正されない場合の原因や解決策も教えてください。
  • pythonのコードを使って実体参照文字や文字参照を修正する方法を教えてください。特定の文字が修正されない場合の対処法や正規表現の使い方も詳しく教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

Pythonはインデントが大事なのですが、このQAではスペースやタブを省略するので、インデントが崩れます。 他の文字(全角空白等)で代用してください。 とりあえず、 > num16_regex = re.compile(u'#x\d+', re.IGNORECASE) \dは[0-9]なので、16進数にマッチしません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • pythonの関数内での関数の定義について

    Python Cookbook 3rd の2章6節の内容でわからないことがあります。 コード import re #サンプルテキスト text = 'UPPER PYTHON, lower python, Mixed Python' #正規表現で文字のケースに合わせて置換する def matchcase(word) .....def replace(m): ..........text = m.group() ..........if text.isupper(): ...............return word.upper() ..........elif text.islower() ...............return word.lower() ..........elif text[0].isupper(): ...............return word.capitalize() ..........else: ..............return word .....return replace #実行分 re.sub('python', matches('snake'), text, flags=re.IGNORECASE) #実行結果 >>>'UPPER SNAKE, lower snake, Mixed Snake' このサンプルコードのmatchcase内のreplace関数に引数を渡していないと思うのですが、どのような仕組みでこのコードは動いているのでしょうか? m.group()とあるので実行分のre.sub(...)でのマッチしたという情報がreplace(m)のmに渡されているだろうとは思うのですが、なぜ引数を指定せずにそのようなことが起こるのかが理解できません。 何卒よろしくお願いします。

  • 文字実体参照が勝手に変換されてしまう

    簡単な問合せフォームを作成中に文字実体参照に変換した文字が、元に戻されてしまい困っています。簡単なサンプルを作成してみましたが、以下の様な状態です。 1.入力フォームを持ったHTMLに 「<>と&lt;と&gt;」 と入力し、xxx.cgiに渡します。 2.xxx.cgi内で入力文字列を取得し、文字実体参照に変換後<hidden>で値を保持、再度xxx.cgiに<hidden>の文字列を渡すようにします。この時点で入力値は 「&lt;&gt;と&amp;lt;と&amp;gt;」 となります。 3.再度xxx.cgiが呼ばれると、文字実体参照に変換する処理が行われる為、入力値が 「&amp;lt;&amp;gt;と&amp;amp;lt;と&amp;amp;gt;」 となるはずですが、 「&lt;&gt;と&amp;lt;と&amp;gt;」 となってしまいます(変換処理が行われているはずなのに変換されていない)不思議に思って変換前のCGIの引数を確認してみると、 「<>と&lt;と&gt;」 と文字実体参照が元に戻されてしまっています。 ちなみに文字実体参照の変換処理は$valueに対象の文字が入っているとして以下の方法で変換しています。 ---------- $value =~ s/&/&amp;/g; $value =~ s/"/&quot;/g; $value =~ s/</&lt;/g; $value =~ s/>/&gt;/g; $value =~ s/\n/<BR>/g; ---------- こういった現象についてでも何か分かるようでしたら宜しくお願いします。

    • ベストアンサー
    • Perl
  • Python 正規表現でsetと=の間の空白で区切られた文字で、一番右端の文字を取得したい

    Pythonで、正規表現を使って、 「set 」(半角空白あり、行の先頭とは限らない)と「=」で挟まれている文字で、=側に一番近い文字を取得したいと考えています。 1行に、「set ○○=」が複数ある場合もあります。 以下の例だと、"gg" と "kkkk" を取得したいのですが、 setと=の間の['fffff gg', 'h ii jjj kkkk ']が返ってきてしまい、一番右端の文字が返ってきてくれません。 setと=の間の文字は、半角の空白で区切られていて、いくつあるかは決まっていません。 どのように正規表現を書けばいいでしょうか? よろしくお願いします。 ----------------------------------------------------------- line = "set fffff gg=FGFGFGFGFGFG set h ii jjj kkkk = HIIJJJKKKKset lll=LLL" import re p = re.compile(r'(?: set|^set) ([^=].*?)=', re.IGNORECASE) print p.findall(line) >>> ['fffff gg', 'h ii jjj kkkk ']

  • 文字参照「#」を含むURI 正しくない?

    アンカータグなどでCGIへのリンクを指定するとき、 xxx.cgi?param1=aaa&param2=bbb などというURIの場合、そのままHTML内に書くと「&」記号が文法エラーになるので、「&amp;」などに置き換えますよね。 これを、汎用的なモジュールや適当なサブルーチンを使って、記号などを一括で「&#38;」のような文字参照に置き換えています。 ところが、 xxx.cgi?param1=aaa&param2=bbb#name のように(パラメーターではなく)アンカー名が入っていると「#」記号が「&#35;」に置き換えられるのですが、Another HTML-lint でチェックしてみると、この部分が正しくないと警告されてしまいます。 -------------- <A> の HREF 属性の URI 中の実体参照 `&#35;` は使用できない文字 `#` です。 -------------- 単純に、実体参照はデコードしてから評価し、#記号はURIとして認められるように思うのですが、違うのでしょうか。 「#記号はURIとして認められる」という私の認識自体は間違っていないと思うのですが、なぜ実体参照にするとNGなのでしょう。「実体参照はデコードしてから評価」という認識が、間違っていますか? どなたか、ご教授お願いいたします。 (※ 文中の「&」記号が、ここに投稿するとなぜか化けるので全角にしてあります)

    • ベストアンサー
    • HTML
  • pythonで次のようなプログラムを作りたいのですがうまくいきません。

    pythonで次のようなプログラムを作りたいのですがうまくいきません。 アドバイスお願いします。 1.ゲーム開始時のユーザの手持ちのコインの枚数を10枚とする。手持ちのコインの枚数を画面に表示。 2.以下while文を使い、無限ループさせる。 3.コインを1枚入れて、スロットマシンを動かす。具体的には、手持ちのコインの枚数を1だけ減らし、さらに、0~9までの乱数を3つ作成し、画面に表示。 4.3の数が3つとも同じ場合はコインを100枚獲得。2つの場合はコインを10枚獲得。 5.現在の手持ちのコインの枚数を画面に表示し、ゲームを継続するかどうか尋ねる。 実行結果の例: your coin: 10 Coin Slot -> 960 残念! your coin: 9 insert coin(Y/N)?- Y Coin Slot -> 110 10コイン、ゲット! your coin: 18 insert coin(Y/N)?- Y Coin Slot -> 872 残念! your coin: 17 insert coin(Y/N)?- N See You Again! your coin: 17 Done! と、いう感じです。 無茶苦茶だと思うので、いろいろと細かい指摘をお願いします。 #coding:sjis #program name:coin_slot.py import random coin=10 print "your_coin",coin print while True: coin=coin-1 num1=random.randint(0,9) num2=random.randint(0,9) num3=random.randint(0,9) print "Coin Slot -> ",num1,num2,num3 if num1!=num2!=num3: print "残念!" elif num1==num2 or num2==num3 or num3==num1: print "10コイン、ゲット!" coin=coin+10 elif num1==num2==num3: print "100コイン、ゲット!" coin=coin+100 print "your_coin",coin print answer=input("insert coin(Y/N)?-") if answer==Y: continue elif answer==N: print "See You Again!" break raw_input("Done!")

  • Python について質問です

    私はPythonの初心者です。 今Python でCSVのファイルを読んで数値だけ(数値以外に文字列や空白などがあります)を計算処理出来なくて困っています。教えて頂けませんか? 質問は、BB.csvというファイルの数値だけの合計と平均を計算したいです。 私のコードは以下です。 # coding: utf-8 import csv import re import string DATAFILE = 'BB.csv' class UnicodeDictReader(csv.DictReader): def __init__(self, f, fieldnames=None): csv.DictReader.__init__( self, f, fieldnames) def main(): total = 0 all_sum = 0 line_num = 0 with open(DATAFILE) as csvfile: reader = UnicodeDictReader(csvfile) for record in reader: # 値を数値で取得 A = int(record['38186']) B = int(record['38181']) C = int(record['38143']) item_total = A + B + C total = item_total all_sum += item_total line_num += 1 average = all_sum / reader.line_num print(" %d + %d + %d = %d " % ( A, B, C, total)) print(u"合計 %d " % all_sum) print(u"平均 %d " % average) if __name__ == '__main__': main() BB.csvは以下です、 38186,38181,38143 1,1,4 1,1,4 ,, ,, 2020,2020,2020 1412,1412,1412 625,625,625 75,75,75 75,75,75 75,75,75 75,75,75 4,4,4 4,4,4 4,4,4 7828,7828,7828 X,, 0,0,0 0,0,0 ○,, 0,0,0 0,0,0 0,0,0 ,,AAA 0,0,0 0,0,0 0,0,0 ,BBB, 0,0,0 0,0,0 0,0,0 ,, 0,0,0 ,, 0,0,0 0,0,0 ,, 0,0,0 0,0,0 750,750,750 400,400,400 400,400,400 ,, 0,0,0 0,0,0 0,0,0 ,, 0,0,0 0,0,0 0,0,0 0,0,0 0,0,0 0,0,0 0,0,0 6,6,6 6,6,6 18,18,18 18,18,18 18,18,18 18,18,18 18,18,18 16,16,16 16,16,16 6,6,6 6,6,6 18,18,18 18,18,18 18,18,18 18,18,18 18,18,18 11,11,11 11,11,11 11,11,11 3,3,3 3,3,3 3,3,3 3,3,3 4,4,4 4,4,4 3,3,3 3,3,3 16,16,16 16,16,16 16,16,16 14,8,11 8,14,11 8,14,11 8,14,11 8,14,11 8,14,11 8,14,11 8,14,11 8,14,11 15,15,15

  • pythonのシンタックスエラー

    python3のサンプルコードがあり、エラーが出ます。 内容はファイルを開いてちょっと変更して中身をプリントするというものです。 これは私が書いたのではなく、本の付録のサンプルなのですが、文法エラーとなります。何が原因かご指摘を頂ければと思いますが。文字コードの問題かなと思いましたが、UTF_8となっています。ファイルをdata.pyとして保存して、コマンドでpython data.pyを叩いたときに出てきます。(すみません、ここに張り付けた段階でインデントが見えなくなっているようですが、それは実際は問題ないです) file = "data.dat" limit = 2.0 with open(file, "r", encoding="utf_8") as fileobj: for i, line in enumerate(fileobj): if line == "\n": continue datalist = line.split(",") result = [int(float(num)<=limit) for num in datalist] print(f"{i}:{result}") #エラーメッセージ # File "data.py", line 9 # print(f"{i}:{result}") ^ #SyntaxError: invalid syntax これに関連する質問ですが、pythonはコンパイルしないようになっているみたいなので、コンパイル時のエラーと実行時のエラーの区別がつきません。このエラーは実際に動作してエラーが出ているということなのでしょうか。他の言語ではシンタックスエラーはコンパイルエラーなので実行前のエラーとは思いますが、文法チェックと実行の関係を教えて頂ければと思いますが。 よろしくお願いします。

  • python 正規表現

    pythonを使用して 単語 あ 語句 みち 空 ジャンプ 無理 ぃ お 暮らし ホーミング 石 防止 ー あなた というような3行からなるテキストデータ(例)を編集したいと思っています ここで ・ひらがな一文字 ・カタカナ一文字 の単語のみ削除しようと思いプログラムにかけると 単語 語句 空 無理 暮 石 防止 となってしまいます プログラムでは以下のようにしております for line in txtfile:  line = re.sub(u'[ぁ-ゞ]', u'', line)  line = re.sub(u'[ァ-ヾ]', u'', line) 本来ほしい結果は 単語 語句 みち 空 ジャンプ 無理 暮らし ホーミング 石 防止 あなた のような結果なのですがこのように他の単語には影響せず一文字のひらがな・かたかなのみを削除するようなコードのアドバイスをいただけないでしょうか? よろしくお願いいたします

  • 正規表現の空白文字について

    Javaで正規表現を使って文字列のマッチング処理を勉強しています。 パラメータで渡されてきた値に"name="と入っている場合、マッチOKに したいのですが、 "name" と "="の間には、全角、半角スペースが複数混在している可能性があり、 その場合もマッチOKにしたいです。 アドバイスをお願いします。 ・マッチOKにしたい文字列  name=  name =  name =  name  =  name   =  など。 name" と "="の間には、全角、半角スペースが複数存在している可能性あり。 スペースなし(name=)の場合もマッチOKにしたい。 以下のようにすると全角のみ、半角のみのスペースなら1文字以上入っていても マッチOK(スペースなし(name=)の場合もマッチOK)ですが、 全角と半角のスペースが混在してしまうとマッチOKになりません。 String param = "name=mike"; Pattern p = Pattern.compile("name( *?|\\s?)=", Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(param);

    • ベストアンサー
    • Java
  • ASCII文字のエンティティネームが知りたい

    HTML実体参照文字について。いわゆる半角英数文字であるASCIIコードでの - (ハイフン/マイナス) と ~ (チルダ) の実体参照記述式の時の表記名:エンティティネームが知りたいです。"&#38;" の様な数値参照記述式では無く "&amp;" の様に書く「実体参照記述式」について知りたいです。 自分であらたか調べましたが、この2つだけがどうしても分かりません。最初から未定義なのかとも思いましたが、半角空白を除く &#33~255; までの全てのASCIIコードに漏れ無くエンティティネームが割り振られており、通常文字列内にも頻出の + * = ? ~等と言った記号類には全て数値参照以外にも実体参照のための名前(エンティティネーム)が設定されており、実際にブラウザ上での表示も完全に同じ様になります。 >参考リンク - http://www.theasciicode.com.ar/ W3Cの公式ドキュメントも読みましたが、全ての文字を網羅しておらず、かなり抜けがありました。 >参考リンク - https://www.w3.org/TR/html5/syntax.html#named-character-references また海外の記事や技術系質問サイト(stackoverflow.com)でも良く分からない、或いは間違った回答を教えており参考になりませんでした("&dash;" とか "&hyphen;" とかの回答ばかり)。 HTML実体参照はWC3によって制定され、各種ブラウザ開発メーカ等に公開情報として発信されてるはずだと思うのですが、何処を探しても &#00~65999; までを完全網羅した一覧表が見当たりません。無いはずは無いと思うんですが…まさかメーカ各位で勝手にエンティティネームを割り振る訳では無いはずなので、必ずやこの世界の何処かには完全版一覧表が存在するはずなのですが、もしかしてこれは国家機密に属するモノなのでしょうか? P.S. >10進16進文字コード変換 - http://code.cside.com/3rdpage/jp/unicode/converter.html ---- 表示例 ---- ・ - : &???; &#45; &#x2D; ・ ‐ : &hyphen; &#8208; &#x2010; ・ - : &minus; &#8722; &#x2212; ・ ~ : &???; &#126; &#x7E; ・ ˜ : &tilde; &#732; &#x02DC; ・ ∼ : &Tilde; &#8764; &#x223C; ほぼ例外無く全てのサイトで「 ~ : &tilde; &#126; 」と解説記述されていますが、これは間違っており大嘘です。 実際に適当なHTMLを自作して &tilde; と &#126; で文字を表示させ、それぞれを上記変換サイトで確認すると、&#126; の時は正しく半角英数文字の ~ が出力されていますが、実体参照表記の &tilde; で出力させた時の文字は見た目こそ非常に似通っており同じモノに見えますが、変換サイトや適当なPHPコード等を通して文字番地を確認すると &#732;(x02DC)だと言う事が確認出来ます。つまり半角英数文字の ~ では無い別の文字。 またかなり古いログの中に、ASCII半角空白の実体参照表記が &sp; だと記述されたものを見ましたが。実際にHTML上で再現したところ実体参照として認識しませんでした。気になります。

このQ&Aのポイント
  • digital tv boxが入っていたFH98/CMのパソコンを使っていますが、初期化した際に削除されました。2012年以前のパソコンはサポートが終了しており、サポートページからの再インストールができませんでした。再インストール方法や代替のソフトについて教えてください。
  • digital tv boxが入っていたFH98/CMのパソコンを使っていますが、初期化した時にdigital tv boxが削除されました。2012年以前のパソコンはサポートが終了しており、再インストールができませんでした。代替のソフトや再インストール方法について知っている方、教えてください。
  • digital tv boxが入っていたFH98/CMのパソコンを使っていますが、初期化した際にdigital tv boxが削除されてしまいました。2012年以前のパソコンはサポートが終了しており、サポートページからの再インストールができませんでした。digital tv boxの代替ソフトや再インストール方法について知っている方、ご教授お願いします。
回答を見る