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

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

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

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

リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

Q&A

解決済

4回答

469閲覧

空白の削除をした後に、リスト格納

snow-pots

総合スコア2

Python 3.x

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

リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

0グッド

0クリップ

投稿2022/03/20 15:11

編集2022/03/20 15:15

質問よろしくお願いします。

win10pro
python3.10(pycharm使用)
下記の変数wordの空白を一文字だけ削除し、最後の行のリストのように格納できないか模索しています。
変数内のもじは不定で、「aa bbbb cc」のときや「aaabb ccc dddd」の時もあります。長いスペースは共通です。
split()など試しましたが狙い通りいきませんでした。
ご存じの方いらっしゃればよろしくお願い致します。

コード#------------------- word ='aaa bbb cc ddd' list = [] ※操作 list = ['aaabbbcc', 'ddd'] #「aa bbbb cc」のときや #「aaabb ccc dddd」のときも #------------------

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

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

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

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

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

meg_

2022/03/20 15:19

> 下記の変数wordの空白を一文字だけ削除し、最後の行のリストのように格納できないか 「変数wordの空白を一文字だけ削除」とはどういう処理でしょうか?最後の行のリストとの関係が理解できませんでした。また、 > 長いスペースは共通です。 とはどういう意味でしょうか?
guest

回答4

0

折衷案です

python

1import re 2 3word ='aaa bbb cc ddd' 4#word = 'aa bbbb cc' 5#word = 'aaabb ccc dddd' 6 7li = [x.replace(' ','') for x in re.split(" +", word)] 8print(li)

投稿2022/03/20 21:00

takasima20

総合スコア7458

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

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

snow-pots

2022/03/23 13:36

お返事が遅くなり申し訳ありません。 1行で処理できるのですね。もう少し勉強してみたいと思います。 ありがとうございました。
guest

0

p.py

python3

1import re 2 3lines = [ 4 'aaa bbb cc ddd', 5 'aa bbbb cc', 6 'aaabb ccc dddd', 7] 8 9pattern = re.compile(r'(\w) (\w)') 10lines2 = [pattern.sub(r'\1\2', line).split() for line in lines] 11 12print(lines) 13print(lines2)

実行例
イメージ説明

参考情報:

python3

1pattern = re.compile(r'(\w) (\w)') 2for line in lines: 3 print(pattern.sub(r'\1\2', line).split())

とすれば、次のような実行結果になります。(2重リストにはならない。単に出力方法を1つずつにしているだけですけど)

$ python3 p.py ['aaabbbcc', 'ddd'] ['aabbbb', 'cc'] ['aaabbccc', 'dddd']

投稿2022/03/20 22:49

編集2022/03/24 00:01
katoy

総合スコア22324

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

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

snow-pots

2022/03/23 13:26

お返事が遅くなり申し訳ありません。 今回は2重リストをなるべく避けたく思っていました。説明不足ですみません。 今後に応用できるかもしれないので、ご参考にさせていただきます。 ありがとうございました。
guest

0

ベストアンサー

python

1import re 2 3words = [ 4 'aaa bbb cc ddd', 5 'aa bbbb cc', 6 'aaabb ccc dddd', 7] 8 9for word in words: 10 print(re.sub(r' (?=[^ ])', '', word).split()) 11 12# 13['aaabbbcc', 'ddd'] 14['aabbbb', 'cc'] 15['aaabbccc', 'dddd']

投稿2022/03/20 16:15

編集2022/03/20 16:31
melian

総合スコア19803

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

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

snow-pots

2022/03/23 13:18

お返事が遅くなり申し訳ありません。 回答いただいた全員のコードを試行しました。 結果、自分のコードに組み込むことを考えると、melianさんの方法が最適となりました。 ありがとうございます。
guest

0

これでいいでしょうか?

python

1word = 'aaa bbb cc ddd' 2list = word.split(' ') 3print(list) 4print([i.replace(' ', '') for i in list if i != ''])

投稿2022/03/20 16:01

kyokio

総合スコア560

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

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

snow-pots

2022/03/23 13:31

お返事が遅くなり申し訳ありません。 正規表現を使用しない方法として、参考にさせていただきます。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問