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

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

ただいまの
回答率

90.50%

  • Python 3.x

    6401questions

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

python3 メッセージの受け渡しと振り分けの判定

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 178

Sample_Test

score 138

文章からメッセージの振り分け。

入力データ
1kara2he xxxx1
3kara1he xxxx2
2kara1he xxxx3
3kara1he xxxx4

#l=[]
#[l.append(input().split()) for _ in range(4)]
完成するデータ
l=[
['1kara2he', 'xxxx1'],
['3kara1he', 'xxxx2'],
['2kara1he', 'xxxx3'],
['3kara1he', 'xxxx4']
]

import re
[r.append(re.findall(r'(\d+|\D+)',i[0])) for i in l]
[print(i) for i in r]

#処理済みデータ
"""
['1', 'kara', '2', 'he']
['3', 'kara', '1', 'he']
['2', 'kara', '1', 'he']
['3', 'kara', '1', 'he']
"""

この時に

A1=[]#A1は仮の配列名で作成済みの配列
A2=[]# 々
A3=[]# 々
for i in r:
    if i[3]=='he': #heは送るの意味
        if int(i[0])==1 and int(i[2])==2:#ここを自動化したい
            A1.append(l[0][1])#送信者
            A2.append(l[0][1])#受信者
print(A1,A2)#確認
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

コード大幅に変えてしまいましたけど、こういうことがしたかったのでしょうか?

import re

def mail(m):
    mat = re.search(r'(.+?)kara(.+?)he',m[0])
    sender = mat.group(1)
    receiver = mat.group(2)
    return (sender,receiver,m[1])

N = 3 # ここで人数変更可能に
people = [{'sent':[],'received':[]} for _ in range(N)]

def exchanger(sen,rec,mes):
    global people
    try:
        s,r = map(lambda p: int(p)-1,(sen,rec))
        people[s]['sent'].append(mes)
        people[r]['received'].append(mes)
    except Exception as e:
        print('message '+"'"+mes+"'"+' couldn\'t be sent : '+str(e)+'\n')

messages = [
    ['1kara2he', 'xxxx1'],
    ['3kara1he', 'xxxx2'],
    ['2kara1he', 'xxxx3'],
    ['3kara1he', 'xxxx4']
]

for m in messages:
    exchanger(*mail(m))

for i,person in enumerate(people):
    print('''No. {0}:
sent : {1}
received : {2}
'''.format(i+1,person['sent'],person['received']))

出力

No. 1:
sent : ['xxxx1']
received : ['xxxx2', 'xxxx3', 'xxxx4']

No. 2:
sent : ['xxxx3']
received : ['xxxx1']

No. 3:
sent : ['xxxx2', 'xxxx4']
received : []

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    連続した数字の和を求めたい

    Python2.7を使っています。 text.txtというファイルがあり、中には数字が羅列しています。 1234680...といった具合です。 これらの和を求めようとしていま

  • 解決済

    logファイルから情報を抽出して他のファイルに出力する

    あるソフトを使いシミュレーションをしています.そのシミュレーションではlogファイルが生成され,各時刻と平均の物理量の値が記述されています.(ここでは,logファイルのStep10

  • 解決済

    【Python】標準入出力におけるリスト格納について

    前提・実現したいこと ここに質問したいことを詳細に書いてください (例)PHP(CakePHP)で●●なシステムを作っています。 ■■な機能を実装中に以下のエラーメッセージが

  • 解決済

    python2.7,beautifulsoupでの競馬情報のスクレイピングが、うまく出来ません。

    netkeiba.com様から、python2.7,beautifulsoupでの競馬情報をスクレイピングしておりますが、うまく出来ません。 # -*- coding:utf-

  • 受付中

    ターミナルで実行するのに時間がかかりすぎる

    ターミナルで実行するのに時間がかかりすぎます。 画像圧縮のアルゴリズムを書いています。 N × N ピクセルのグレースケール画像があり各ピクセルの画素値は 0 から 255

  • 解決済

    python 標準入力

    初歩的な質問で申し訳ありません pythonで 1234 5678 9999 のように入力したとき 配列 e[0][0]=1 e[0][1]=2 e[0][2]=3 ... e[2

  • 解決済

    複数行列への分割について

    Pythonによる複数行列の解析に関する質問です。 4行n列の.txtファイルを読み込んで分割を行いたいと考えています。 txtファイルは下記のような内容です。 531 1 1

  • 解決済

    python 文字列を判定する方法

    何らかのstr型が連続して格納されている配列(例['100'],['.'],['abc'])の各要素を判定し、数値ならint型に変換後次要素の判定に移る、数値ではないのであればfa

同じタグがついた質問を見る

  • Python 3.x

    6401questions

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