質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

443閲覧

リストの要素の一部の文字だけをそのままで出力させたい。

GuMasi

総合スコア73

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1グッド

1クリップ

投稿2019/12/30 06:41

編集2020/01/01 03:04

変数に対してメソッドを使い出力させたいです。
: 下記のコードを修正させたいこと
①タグを全て小文字で表記するように直し、ですがDOCTYPE 宣言は除きたい。
②中身はそのままにしたい(Hello, World.)
③最後に解答をprintしたい

試したこと: split()メソッドを使い、ターミナルで実行した結果が上記の出力したい内容と異なってしまい上手くいきません。


wl$ python3 q_strings.py
['<!DOCTYPE html>', '<html>', '<body>', '<DIV>', '<p>Hello, World.</p>', '</DIV>', '</body>', '</html>', '']


こちらが課題として出題されていまして。

python3

1 2apple = '''<!DOCTYPE html> 3<html> 4<body> 5<DIV> 6<p>Hello, World.</p> 7</DIV> 8</body> 9</html>

下記は私が解答した記述コードになります。

python3

1 2apple = apple.split('\n') 3 4print(apple) 5
:期待する出力文字列 <html> <body> <div> <p>Hello,World.</p> </div> </body> </html>
DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shiracamus

2019/12/30 07:02

最終的に欲しい大文字化した結果を示してください。
GuMasi

2019/12/31 12:15

コメントしていただきありがとうございます。 DOCTYPEやHello, World.です。
shiracamus

2019/12/31 14:03

['html','body','DIV','p Hello,World./p','/DIV','/body','/html'] が ['html','body','DIV','p HELLO,WORLD./p','/DIV','/body','/html'] になればいいのですか?
GuMasi

2019/12/31 23:12

私の伝え方が悪く申し訳ありません。 tiioiさんのコメント欄にも記載させていただいたのですが、変数appleに対してメソッドを使い最後に解答をprintしたいのです。 :下記のコードで出力させたいこと  ①タグを全て小文字で表記するように直し、ですがDOCTYPE 宣言は除きたい。  ②中身はそのままにしたい(Hello, World.)  ③最後に解答をprintしたい apple = '''<!DOCTYPE html> <html> <body> <DIV> <p>Hello, World.</p> </DIV> </body> </html> '''
shiracamus

2019/12/31 23:32

入力は文字列のリストではないのですね? 質問内容を修正していただけますか? 入力文字列と、期待する出力文字列の両方を書いてください。
GuMasi

2020/01/01 00:07

>入力は文字列のリストではないのですね? >>はい。 > 質問内容を修正していただけますか? >>わかりました。
guest

回答2

0

ベストアンサー

pと/p以外はすべて大文字にするということであれば、正規表現でpと/pに囲まれた文字列かどうかを判定し、その場合はpと/p以外はすべて大文字、それ以外の場合は全部大文字にすればよいです。

python

1import re 2 3apple = ["html", "body", "DIV", "p Hello,World./p", "/DIV", "/body", "/html"] 4 5 6def convert(s): 7 match = re.match(r"p(.+)/p", s) 8 if match: 9 # pと/pに囲まれた文字列の場合、中身だけ大文字にする。 10 return f"p{match.group(1).upper()}/p" 11 return s.upper() # それ以外の場合はすべて大文字にする 12 13 14apple = list(map(convert, apple)) 15print(apple) 16# ['HTML', 'BODY', 'DIV', 'p HELLO,WORLD./p', '/DIV', '/BODY', '/HTML']

追記

正規表現でもできなくはないですが、HTML パーサーのライブラリを使うと簡単にできます。
pip install beautifulsoup4 でインストールできます。

python

1from bs4 import BeautifulSoup 2 3apple = """<!DOCTYPE html> 4<html> 5<body> 6<DIV> 7<p>Hello, World.</p> 8</DIV> 9</body> 10</html> 11""" 12 13soup = BeautifulSoup(apple) 14 15 16html = soup.prettify() 17html = html.replace("<!DOCTYPE html>", "") # <!DOCTYPE html> 削除 18 19print(html) 20# <html> 21# <body> 22# <div> 23# <p> 24# Hello, World. 25# </p> 26# </div> 27# </body> 28# </html>

投稿2019/12/30 07:06

編集2020/01/01 19:14
tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

GuMasi

2019/12/31 12:07

ありがとうございます。 仮に 下記のようなコードがありました場合, 変数appleに対してメソッドを使い記述する場合(①タグを全て小文字で表記するように直し、 DOCTYPE 宣言を除く ②中身はそのままに(Hello, World.)③最後に解答をprintしたい)。はどのようにすれば可能でしょうか? apple= '''<!DOCTYPE html> <html> <body> <DIV> <p>Hello, World.</p> </DIV> </body> </html> '''
tiitoi

2020/01/01 19:14

追記しましたが、タグは全部小文字、DOCTYPE宣言は削除ということでよろしかったですか?
GuMasi

2020/01/02 11:57

>タグは全部小文字、DOCTYPE宣言は削除ということでよろしかったですか? >>はい。 ご丁寧に教えてくださりありがとうございます、助かりました。
guest

0

スマートではないですが書いてみました。

python

1apple = apple=['html','body','DIV','p Hello,World./p','/DIV','/body','/html'] 2for i in range(len(apple)): 3 elem = apple[i]; 4 if elem[:2] == 'p ' and elem[-2:] == '/p': 5 apple[i] = 'p ' + elem[2:-2].upper() + '/p' 6print(apple)

投稿2019/12/30 07:24

ikapy

総合スコア1167

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

GuMasi

2019/12/31 12:22

回答してくださりありがとうございます。 言葉足らずで申し訳ありません。tiitoiさんのコメントに記載させていただきましたのでご参照のほどお願いできたらと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問