[ad_1]
data.txt というファイルが与えられます。 このファイルの各行には、カンマで区切られた名前と電子メール アドレスが含まれます。 ただし、一部の行は破損しており、複数のカンマが含まれているか、電子メールまたは名前が欠落している可能性があります。 あなたのタスクは、このファイルを解析し、破損した行を除外し、名前がキーで電子メール アドレスが値である辞書を返す関数を作成することです。
出力辞書には、すべての名前が小文字で表示され、名前に基づいて並べ替えられている必要があります。
たとえば、data.txt に次の内容が含まれているとします。
ジョン・ドゥ、johndoe@example.com
アリス、alice@example.com
不正なデータ、anotherdata、extra@gmail.com
ボブ・スミス
イブ、eve@example.com
関数は以下を返す必要があります:
{
‘アリス’: ‘alice@example.com’,
‘eve’: ‘eve@example.com’,
‘ジョン・ドウ’: ‘johndoe@example.com’
}
私が試したこと:
def parse_data(filename): result = {} with open(filename, 'r') as file: lines = file.readlines() for line in lines: parts = line.strip().split(',') return result
現時点で私が得たものはこれだけです。 関数 parse_data は、ファイルを開いてその内容を 1 行ずつ読み取ることになっています。 各行はカンマを区切り文字として使用して分割されます。 次のように関数を完成させる必要があります。
1. 行が有効かどうかを確認します (つまり、行には名前と電子メールの 2 つの部分があります)。
2. 有効なデータを結果辞書に追加します。
3. 名前に基づいて辞書を並べ替えます。
ただし、for ループのどこから何を始めればよいかわかりません。 ヒントをもらえますか?
解決策 1
まずは、 5. データ構造 — 辞書[^] 有効なエントリを保持します。 その後、ファイルを一度に 1 行ずつ読み取り、必要に応じて各行を処理するだけです。 使用できます split
の方法 組み込み型 — 文字列[^] 項目が 2 つより多い、または少ない行を検索します。 項目が有効な場合は、辞書に追加します。 すべての項目を処理したら、辞書を並べ替えて印刷するだけです。
解決策 2
まずはドキュメントから始めてください。 Python String Split() メソッド[^] そしてそれが何を返すかを見てください。 それを使用して、部品の数を確認できます。
次に、最初のメール アドレスが空白でないか、2 番目のメール アドレスが有効であるかどうかを確認できます。 有効な電子メール アドレスの形式[^]
ループの外側で辞書を作成し、有効な名前とアドレスのペアのみをそれに追加します。
開始する際に問題が発生する場合は、次のことが役立つかもしれません。 問題を解決するコードの書き方、初心者ガイド[^]
解決策 3
ここでは高レベルのアプローチを示します。 私はPythonはやりませんが、概念はどの言語でも同じです。
(@) 記号で分割します。 必ず 2 つの値を取得してください。 右側は電子メールのドメインです。
左側の値を (,) で分割します。 値が 2 つあることを確認してください。 最初の値は個人名、2 番目の値は電子メール名 (ドメインを除く) です。
[ad_2]
コメント