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

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

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

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

Python 3.x

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

Q&A

解決済

2回答

1581閲覧

読み込んだファイル名を、出力するcsvファイルに対応させたい

Phillip

総合スコア12

CSV

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

Python 3.x

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

0グッド

0クリップ

投稿2017/09/22 06:54

###前提・実現したいこと
とても初歩的な質問です。

あるフォルダ内全てのshpファイルを読み込み、csvに変換するのが目的となります。

shpファイル名は"01.shp","02.shp",..."10.shp"と連続した数字となっています。

CSVへの出力を行う際に、"「元のshpファイルの数字」.csv"という名前にして対応を明確にしたいと思っています。
(例;"01.shp" → "01.csv")
###発生している問題・エラーメッセージ
一般的な出力する時のコードは下記の様になっていると思います。

変数名.to_csv("ファイル名")

このクオートに囲まれた中に、どうやって元ファイルの数値を入れるのかが分かりません。
###該当のソースコード

import geopandas as gpd path_number = [] for i in range(1,11): number = "0"+str(i) path_number.append(number) for j in path_number: filepath = j + '.shp' df = gpd.read_file(filepath) df.to_csv('?')

###試したこと
?の所に変数jを使ってファイル名を作ろうとしたのですが、クオートに囲まれてしまうので変数と認識されませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

guest

回答2

0

あまり難しく考えず、ファイル名を作成する文字列操作に注目するとよいです。
以下では%02dで2桁0詰の数値文字列を作成しています。

Pyhthon

1for j in range(10): 2 shp_path = '%02d.shp' % (j+1) 3 csv_path = '%02d.csv' % (j+1) 4 5 print(shp_path) 6 print(csv_path) 7 8 #df = gpd.read_file(shp_path) 9 #df.to_csv(csv_path)

投稿2017/09/22 07:19

can110

総合スコア38233

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

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

Phillip

2017/09/22 07:39

回答ありがとうございました!
guest

0

ベストアンサー

??

数行前で filepath = j + '.shp' とやっているのと同じ要領で、クオートしなければよいのではないでしょうか。

python

1# before 2df.to_csv('?') 3 4# after 5df.to_csv(j + '.csv')

ちなみに数値をゼロ埋め表記にした文字列を取得したい場合は次のように format を使うと便利です。

python

1# 2桁に統一: "01", "02", ... "10" 2number = '{:02d}'.format(i) 3 4# 3桁に統一: "001", "002", ... "010" 5number = '{:03d}'.format(i) 6 7# ファイル名ごと生成: "01.csv", "02.csv", ... "10.csv" 8number = '{:02d}.csv'.format(i) 9

投稿2017/09/22 07:15

編集2017/09/22 07:17
miyahan

総合スコア3095

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

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

Phillip

2017/09/22 07:38

to_csv()の括弧内で、変数+クオートという形がとれる事を知らなかったです! 回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問