0
0

Python htmlの&_amp;(_を抜いて) の使用例

Posted at

& シーケンスはよく目にすることがあると、思います。&_amp;は自分自身を&に変えます。&_lt;,&_gt;(<,>)これですよね。これは<>とは区別できます。<>の中に&_lt;と&_gt;は別の物と認識されます。<>この中に書き込めます<>それで、<>はスプリットに使えます。
また、<br>これは知っていますよね。改行記号です。\n(h0d0a)です。普通に書くと、ファイル内もテキストも改行しますが、<br>にすると、起こりません、ニューラインが。実はとても、便利なんですよ。
あまり使わない&_quot; " これ、非常に面倒なんです。文の中に1個だけ使おうとする時、でも、2個だと、閉じてしまうか、エラーになるんです。接続子がないからです。
とまぁ、便利なのは、分っていただいた所で、これって、勝手に「テンポラリシーケンス」として、作られる、て知っていましたか?
念のため\nを<br>に変えて、\nを今後に使えるように、変数を置換します。その後、ファイルに変えるシーケンス(&wl_0;)を中に使っていても大丈夫なように&を&amp;に変えるのですそうすることで同一名が、無くなります。
その後、\nに変えて&wl_0;を入れて変数を配列から一つの変数に繋ぎます。さらに配列の別の配列を繋ぐのに&wl_1;を入れます。配列か変数に一個として入りますよね。最後に閉めとして\nを入れます。もちろんこの後に変数としてまとめる配列を入れられます。配列として。
では、参考資料として、pythonのを載せます。

#!C:/Python3/python_3_12_0_embed_amd64/python -X utf8
# coding=utf-8

print ('Content-type:text/html'+'\n'+'\n')
print ('<!DOCTYPE html><html lang="ja"><head><meta charset="UTF-8"><title>pyton_v3</title></head><BODY BGCOLOR="#ffffff"><h1>test decoder3</h1>'+'\n')
print ('<p>日本語を話せる、システムです。「This is a system that allows you to speak Japanese.」<br>\n')
print ('カンニングペーパー「コピペオンライン英和翻訳 『Multilingal Online Translation』」はMicrosoftストアーで。<br>\n')
print ('The cheat sheet \"Copy and Paste Online English-Japanese Translation 『Multilingal Online Translation』\" is available at the Microsoft Store.<br>\n')
print ('ブラウザ、拡張機能もお忘れなく。わからない時は、質問AIですよ。「Don\'t forget your browser and extensions. When you don\'t understand, there is a question AI.」</p><br>\n')

# import re
import datetime

now = datetime.datetime.now()
formatted_date = now.strftime("%Y/%m/%d %H:%M:%S")
it_day = now.strftime("%Y年%m月%d日")
it_time = now.strftime("%H時%M分%S秒")

# mydisp = re.sub(r'\x','%', 'abcIt let1def<br>\n')
# print (mydisp)
#decode()
#def decode():
my_hash = {}
my_hash['name'] = ''
my_hash['subm'] = ''
my_hash['comment'] = ''
my_hash['url'] = ''
my_hash['l_tim'] = formatted_date
my_hash['num'] = '0'
my_hash['to_day'] = it_day
my_hash['day_cou'] = '0'
my_hash['Not_reserved'] = 'unknown'

come = ''

data_file_name = 'file.txt'

in_d = {}
in_d['apple'] = '100'
in_d['banana'] = '150'
in_d['cherry'] = '200'
print ('it let2<br>\n')
print ('this aplle to '+in_d['apple']+'yen<br>\n')
in_d['apple'] = '110'
print ('pey applo to '+in_d['apple']+'yen<br>\n')
file_path_xlsx = r"C:\Users\UserName\Documents\Example.xlsx"
#人気者やなぁ
import cgi

text = []
#    f = open('python_test2.txt', 'r')
    #自分開いていると読み込めないcgiは、サーバーが実行する
#    for line in f:
#        text.append(line)
      #  print(line)

#    f.close()


#print(<a href=\"http://127.0.0.1/my_python/python_test3.html\" target=\"~_blank\">pythonのソースファイル</a><br>\n')
#print('Content-Type: text/plain\n\n')
#print(text)
#print("")
#print('<br><a href=\"http\">なにか</a><br>\n')


#return
import os
import re
import sys

req_met = os.environ.get('REQUEST_METHOD')
print ('it let2_1<br>\n')
if req_met == 'POST' :
    for query in sys.stdin:
        os.environ.get('CONTENT_LENGTH')
        pass

else :
    query = os.environ.get('QUERY_STRING')

if len(query) > 10 :
    language = len(query)
    print (f'largebyte: 10 {language}<br>\n') #test message after get out;F(x)Qestit??

print ('it let2_2<br>\n')

print (query+' buf <br>\n')

buf_arrey = query.split("&")

print (buf_arrey)
print ('<br>\n')
print ('it let2_3<br>\n')
separator = '<br>'
#tmp_arrey = separator.join(buf_arrey)
#print (tmp_arrey)
#print ('<br>\n')

key0=''
value0=''
n_n = 0
print ('it let2_4<br>\n')
if "" not in buf_arrey :
    for my_buf in buf_arrey :
        print (f'{n_n}kai<br>\n')
        (key0, value0) = my_buf.split("=")
        # if "%" in key0 :
        key0 = re.sub(r'%([0-9a-fA-F][0-9a-fA-F])', lambda x: chr(int(x.group(1), 16)), key0)
        key0 = re.sub(r'\+', ' ', key0)
        key0 = re.sub(r'&', '&amp;', key0)
        key0 = re.sub(r'<', '&lt;', key0)
        key0 = re.sub(r'>', '&gt;', key0)
        key0 = re.sub(r'\r\n', '<br>', key0)
        key0 = re.sub(r'\r|\n', '<br>', key0)
        my_key = key0
        value0 = re.sub(r'%([0-9a-fA-F][0-9a-fA-F])', lambda x: chr(int(x.group(1), 16)), value0)
        value0 = re.sub(r'\+', ' ', value0)
        value0 = re.sub(r'&', '&amp;', value0)
        value0 = re.sub(r'<', '&lt;', value0)
        value0 = re.sub(r'>', '&gt;', value0)
        value0 = re.sub(r'\r\n', '<br>', value0)
        value0 = re.sub(r'\r|\n', '<br>', value0)





        my_val = value0
        if my_key == 'comment':
            value0 = re.sub(r'<br>', '\n', value0)
            come = value0

        #I can't get around to it, so I'll try putting it out.
        my_hash[my_key] = my_val

        n_n += 1
        print (f'key={my_key} value={my_val}<br>\n')


key_list0 = list(my_hash.keys())
print(key_list0)
print ('<br>\n')
for i, val0 in enumerate(key_list0):
    if i == len(key_list0) - 1:
        print('last: '+val0+' '+my_hash[val0]+'<br>\n')
    else:
        print('middle '+val0+' '+my_hash[val0]+'<br>\n')


print ('it let2_x_1:'+my_hash['num']+'<br>\n')
if my_hash['num'] == '' :
    my_hash['num'] = '0'

number = int(my_hash['num']) + 1
my_hash['num'] = str(number)
my_list = my_hash['name']+'<>'+my_hash['subm']+'<>'+my_hash['comment']+'<>'+my_hash['url']+'<>'+my_hash['l_tim']+'<>'+my_hash['num']+'<>'+my_hash['to_day']+'<>'+my_hash['day_cou']+'<>'+my_hash['Not_reserved']

if os.path.exists(data_file_name):
    #fileがあれば読み込む
    with open(data_file_name, 'r') as f:
      tmp_list_in = f.readlines()

    #f = open(data_file_name, 'r')
    #for line in f:
    #    tmp_list_in.append(line)
    #    print(line)

    #f.close()

    if tmp_list_in:
        result1 = re.search('&wl_1;', tmp_list_in[0])
        if result1:
            arrey_arrey = tmp_list_in[0].split("&wl_1;")
            tmp_list_in[0] = arrey_arrey[0]

        result0 = re.search('&wl_0;', tmp_list_in[0])
        if result0:
            my_list_arrey = tmp_list_in[0].split("&wl_0;")

            n=0
            for tmp_i in my_list_arrey :
                tmp_i = re.sub(r'&amp;', '&', tmp_i)
                my_list_arrey[n] = tmp_i
                n += 1

           # number = int(my_list_arrey[5]) + 1
            #   number = '{0.0}'.format(my_list_arrey[5]) + 1.0
           # my_hash['num'] = str(number)

        #else:
            #わたしの書式のファイルでないとき
            #エラー関数を呼び出し終わる。書き換えるわけにいかんだろう。

    else:
        #空のファイルの時または、消えた時
        my_hash['num'] = '100'
        my_list_arrey=[my_list]

else:

    my_list_arrey=[my_list, my_list]

    with open(data_file_name, 'w') as f:
        for item in my_list_arrey:
           f.write(f"{item}&wl_0;")
           f.write('&wl_1;')

        for item in my_list_arrey:
            f.write(f"{item}&wl_0;")
            f.write('&wl_1')

        for item in my_list_arrey:
            f.write(f"{item}&wl_0;")
            f.write('\n')

            #ファイルの書き込みすべて終わるとクローズ

print ('it let2_5<br>\n')
new_my_list_arrey= []
if my_hash['comment'] != "" :
#name,subm,come,url,
    if len(my_list_arrey) != 0:
        if my_list_arrey[0] != my_list:
            my_list_arrey.insert(0, my_list)
            for my_my_lis in my_list_arrey :
                result = re.search('<>', my_my_lis)
                if result:
                    new_my_list_arrey.append(my_my_lis)

            my_list_arrey = my_list_arrey[:0]

            for my_my_lis in new_my_list_arrey :
                result = re.search('<>', my_my_lis)
                if result:
                    my_list_arrey.append(my_my_lis)

            #my_list_arrey.insert(0, my_list)
    else:
        my_list_arrey.insert(0, my_list)

#if(my_list =='<><><><><><>') is not  my_list_arrey[0] != my_list :bato
#    my_list_arrey.insert(0, my_list)
else:
    my_listem = my_list_arrey[0]
    l_dat = my_listem.split("<>")
    my_hash['name'] = l_dat[0]
    my_hash['url'] = l_dat[3]

if len(my_list_arrey) > 6:
    my_list_arrey = my_list_arrey[:6]
print ('it let2_6<br>\n')
#with open('file.txt', 'w') as f:
#    f.write(my_list_arrey)
n=0
for tmp_i in my_list_arrey:
    tmp_i = re.sub(r'&', '&amp;', tmp_i)
    my_list_arrey[n] = tmp_i
    n += 1
unit = 0
with open(data_file_name, 'w') as f:
    for item in my_list_arrey:
        f.write('%s&wl_0;' % item)

    f.write("&wl_1;")
    #for joint &wl_1;'arrey1["<><br><>"&wl_0"<>&(amp;)lt;&(amp;)gt;<>"&wl_0"<><><>"] &wl_1 arrey2 ..' \n (1 line)inarrey(\n=><br>)
    for item in my_list_arrey:
        f.write('%s&wl_0;' % item)

    f.write("\n")

# chng"%s\n; =>"%s&wl;"ここの \n 細工して最後に入れれは 配列 in 配列 だわ&wl_n_m;とか この場合\n='<br>'に変えられているが。


print('<br><br>\n')
print("現在の日付と時刻: ", now)
print('<br>'+formatted_date+' Japanise style. きょうは、'+it_day+'で時計は'+it_time+'<br>\n')

# def validate_buf(query):
#    pattern = r"\x"

#    if len(query) != len(re.findall(pattern, query)):
#        print('buf is \\x include.<br>\n')

print ('it let2_7<br>\n')

#form()


#def form():
print ('it let3<br>\n')


print ('<form action=\"http://127.0.0.1/my_python/python_test3.cgi\" method=\"POST\">\n')
print ('<table border=0 cellspacing=1>\n')
#in_d['name'] = ''
print ('<tr><td><b>name</b></td><td><input type=text name=name size=28 value=\"'+my_hash['name']+'\" maxlength=\"12\" class=f></td></tr>\n')
#in_d['subm'] = ''
print ('<tr><td><b>submit</b></td><td><input type=text name=subm size=36 value=\"'+my_hash['subm']+'\" maxlength=\"36\"class=f></td></tr>'+'\n')
#in_d['comment'] = ''
print ('<tr><td colspan=2><b>comment</b><br><textarea cols=70 rows=7 name=comment wrap=\"soft\" class=f>'+come+'</textarea></td></tr>'+'\n')
#in_d['url'] = ''
print ('<tr><td><b>url</b></td><td><input type=text size=52 name=url value=\"'+my_hash['url']+'\" maxlength=\"60\" class=f></td></tr>'+'\n')

print ('<tr><td><input type=submit value=\"submit\"></td><td><input type=reset value=\"reset\"></td></tr>\n')
print ('</form></table><br>\n')
#come = ''
print ('name='+my_hash['name']+'<br>'+my_hash['comment']+'<br>It OK?<br>\n')
print (my_list_arrey)

in_name=''
in_subm=''
in_come=''
in_url=''
in_time=''

for my_line in my_list_arrey:
    myli_arr = my_line.split("<>")
    in_name = myli_arr[0]
    in_subm = myli_arr[1]
    in_come = myli_arr[2]

    in_come = re.sub(r'````?`?`?`?`?`?`?', '```', in_come)
    in_valle_arrey = in_come.split('```')
    new_in_valle = []
    n = 0
    for out_v in in_valle_arrey:
        if n % 2 == 0:
            out_v = re.sub(r'&amp;','&',out_v)
            out_v = re.sub(r'&gt;','>',out_v)
            out_v = re.sub(r'&lt;','<',out_v)

        new_in_valle.append(out_v)
        n += 1

    separator = '```'
    in_come = separator.join(new_in_valle)

    in_url = myli_arr[3]
    in_time = myli_arr[4]
    in_nomber = myli_arr[5]
    in_to_d = myli_arr[6]
    in_da_co= myli_arr[7]
    #in_unno = myli_arr[8]
    print('<br>Title:<font color=\"#0000ff\"><b>'+in_subm+' </b></font>:is '+in_time+'<br><b>Coment</b> '+in_nomber+'<br>'+in_come+'<br><font color=\"#ff0000\"><b>End</b></font><br>\n')
    myli_arr = myli_arr[:0]

#return

#
key_list = list(in_d.keys())
print(key_list)
print ('<br>\n')
for i, val in enumerate(key_list):
    if i == len(key_list) - 1:
        print('last: '+val+' '+in_d[val]+'<br>\n')
    else:
        print('middle '+val+' '+in_d[val]+'<br>\n')

print ('<br><a href="python_html.html">index</a><br>\n')
print ('</body></html>\n')
exit()

いろいろな応用を探してみてください。VB のarrey を繋いだり(足したり)出来ますよ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0