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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

334閲覧

python 読み込んだ2列csvをfor文で回しても、2列目の要素を正しい順番で得られません。

python_ama

総合スコア0

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/12/20 02:33

編集2022/12/21 02:19

前提

Python を独学中の初心者です。
とてもシンプルな処理ですが、2列あるcsvを読み込んで、以下の事が実現したいです。

実現したいこと

  1. 2列あるcsvを読み込む
  2. 1列目(url)を上から順番に読み込んで、アクセスする
  3. 2列目(area)を同じく上から順番に書き出す

url      area
http://~1  北区
http://~2  北区
http://~3  渋谷区
http://~4  渋谷区
http://~2  江東区
http://~1  江東区
http://~3  荒川区
http://~3  荒川区

発生している問題・エラーメッセージ

上記のように、1列目のurlには重複値が存在します。
特に重複値の削除などはしないで、このまま上から順番に処理をしたいです。

1列目のurlに関しては上から順番に読み込んで、問題なくアクセスすることはできますが、
2列目を上から順番にアウトプットすることができません。

該当のソースコード

※※ 所々省略してあります。 in_1 = "csv_test" csv_path = "*****" # ブラウザを起動 driver = webdriver.Chrome(executable_path='chromedriver') # csvの読み込み store_urls = [] store_areas = [] with open ("{}/{}.csv".format(csv_path,in_1), "r", encoding='utf-8-sig', errors="", newline="") as f: reader = csv.reader(f) for row in reader: store_urls.append(str(row[0])) store_areas.append(str(row[1])) # url for store_url in store_urls: driver.get(store_url) ~ 処理 ~ ~ 処理 ~ ~ 処理 ~ # エリア for store_area in store_areas: store_area_kansei = store_area print(store_area_kansei) ↓↓↓↓↓↓↓↓↓↓ ・store_area_kansei の表示結果 荒川区 荒川区 荒川区 荒川区 荒川区 荒川区 荒川区 荒川区 ※csv を読み込んだ時の状態になっておらず、全てfor文で処理した一番最後の要素になってしまう。

試したこと

for文やdict型などの知識も勉強途中であり、とても稚拙で申し訳ございませんが、ご教示いただけませんでしょうか。

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

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

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

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

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

TakaiY

2022/12/20 02:45

「print時」とはコードのどの行のことですか? 「コードを回すと2列目が順不同で取得されてしまいます」とは具体的にどういう意味ですか? コードの最後のdfに想定外の形でデータが入るということですか? だとすると、どのようなデータになるのでしょうか。
melian

2022/12/20 02:54 編集

本題とは関係ありませんが、 df = pd.DataFrame(columns=columns) という行がありますので、Pandas をインストールされているのかと思います。そうでしたら、read_csv() で読み込んでみてはどうでしょうか。 df = pd.read_csv(csv_path) store_urls = df['URL'].to_list() store_areas = df['area'].to_list()
python_ama

2022/12/20 03:04

TakaiY 様 ご確認いただき、誠にありがとうございます。 「print時」とは最後から4行目となります。 また、再度確認しましたところ、print時にすでに2列目の順序が乱れていました。 最終的にdfに入るデータは、以下の様な形となってしまっております。 URL     エリア http://~1  荒川区 http://~2  荒川区 http://~3  荒川区 http://~4  荒川区 http://~2  荒川区 http://~1  荒川区 http://~3  荒川区 http://~3  荒川区 csvの順列を保持したままにしたいのですが、上手くいかない形となっております。
python_ama

2022/12/20 03:06

melian 様 ご確認いただき、誠にありがとうございます。 ご指摘の通り、Pandas をインストールしております。 ご教示頂いた、read_csv() で読み込みを試みてみます。 ありがとうございます。
TakaiY

2022/12/20 04:28

最後から4行目は print(store_url_kansei) ですが、 その store_url_kansei という変数はここにしか無く、何を表示しているのかわからないので、この変数を生成している処理を含めたコードにしていただけますか。
python_ama

2022/12/20 05:35

TakaiY 様 度々ご回答いただき、ありがとうございます。 ご指摘頂きました store_url_kansei という変数ですが、誤りでございました。 正しくは以下のように、 csvを読み込み、for文で処理をした、store_url と store_area_kansei という2つの変数を確認するためにprintを使用している次第です。 print(store_url) print(store_area_kansei) この時点で、 store_url は、for文で処理したリスト store_urls の一つ目の値がちゃんと入っているのですが、 store_area_kansei は、荒川区 となっているような状況です。
TakaiY

2022/12/20 06:46

ぜんぜんよくわからないのですが、 print(store_url) としたときにどのような値が表示されるのですか? 提示されているソースからすると、それはリストではなく、store_urls の最後の値が入っていると思いますよ。 質問にあるソースが本当のものでないのであれば、差し替えをお願いします。 また、改めて、どこにどのような値が入っているはずがそうでないのか整理して提示おねがいします。 回答はここではなく、質問を編集してください。
odataiki

2022/12/20 09:14

質問がわかりにくかったので確認ですが、こういうことですか? 実現したいこと url      area http://~1  北区 http://~2  渋谷区 http://~3  江東区 http://~4  荒川区 http://~2  渋谷区 http://~1  北区 http://~3  江東区 http://~3  江東区 現在のプログラムの出力内容 url      area http://~1  北区 http://~2  北区 http://~3  渋谷区 http://~4  渋谷区 http://~2  江東区 http://~1  江東区 http://~3  荒川区 http://~3  荒川区 (areaが期待した出力順になっていない)
TakaiY

2022/12/20 09:19

全部荒川区になっているということだと思います。 多分、ループの最後に取った値がすべてのカラムに入っているのではないかと。
TakaiY

2022/12/21 02:37

・store_area_kansei の表示結果 荒川区 荒川区 荒川区 荒川区 荒川区 荒川区 荒川区 荒川区 コードを見ると、1回しか表示されないと思うのですが、本当に print(store_area_kansei) # この行はインデント0 このprintの出力ですか? (謎が多い)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問