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

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

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

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

Q&A

1回答

1111閲覧

pythonでリストをCSVに出力する

arron

総合スコア34

Python

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

0グッド

0クリップ

投稿2020/04/12 00:23

編集2020/04/12 05:14

#問題
計算値をリスト化し、それをCSVにしてファイル保存するプログラムを作りたいと思っています。
作ったコードでは文字列をそのまま保存しているので、リストの[]が残ってしまいます。
エクセル等でCSVとして認識できるように[]が入らない形で保存するにはどうしたらよいでしょうか?

##やってみたこと
PandasやCSVをimportして利用する方法も検討したのですが、使い方が良くわからず、うまくいきませんでした。

python コード import tkinter as tk import tkinter.filedialog import math root = tk.Tk() root.withdraw() filename = tkinter.filedialog.asksaveasfilename() if filename: pass else: print("No file specified") exit() cycles = 2 steps = 1000 harmonics = 5 try: with open(filename,'w')as file: for i in range(steps): angle_in_degree = 360*cycles*i/steps angle = math.radians(angle_in_degree) s = str(angle_in_degree) w = 0 s = [] for i in range(1,harmonics+1): s.append(math.sin(angle*(i))/i) # print(s) file.write(str(s)+"\n") print("Writing to file" + filename + "is finished") except IOError: print("Unable to open file")

###出力例
[0.0, 0.0, 0.0, 0.0, 0.0]
[0.012566039883352606, 0.012565047721668738, 0.012563394223311514, 0.012561079544942387, 0.012558103905862672]
[0.025130095443337476, 0.025122159089884775, 0.025108935175977575, 0.02509042871280372, 0.025066646712860845]
…省略…
[-0.03769018266993446, -0.037663402763966285, -0.03761879495782774, -0.03755639728018918, -0.037476262917144496]
[-0.02513009544333818, -0.02512215908988548, -0.025108935175978866, -0.02509042871280442, -0.025066646712861195]
[-0.012566039883354092, -0.012565047721670223, -0.012563394223313588, -0.012561079544943872, -0.012558103905863802]
全1000行

####利用環境
Python ver. 3.7.4
OS 名 Microsoft Windows 10 Home
バージョン 10.0.18363 ビルド 18363

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

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

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

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

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

y_waiwai

2020/04/12 00:25

このままではコードが読めないので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
arron

2020/04/12 00:59

なれなくてすみません。 枠内に張り付けなおしておきました。 宜しくお願い致します。
meg_

2020/04/12 03:01

現状の出力結果のサンプルを掲載してください。
arron

2020/04/12 05:16

出力結果のサンプルを貼り付けました。 1000行もあるので最初と最後の3行ずつ添付しています。
nto

2020/04/12 06:58

粗雑な回答かもしれませんが、file.write(str(s).replace('[','').replace(']','')+"\n")で置換してしまうのはどうでしょうか?
arron

2020/04/12 07:32

nto様 できました! replaceという機能があるのですね。 シンプルで分かりやすく、とても助かりました。
guest

回答1

0

数字のリストをカンマ区切りでテキスト出力する例です。

Python

1a = [1,2,3,4,5] 2 3with open('test.txt', 'w') as f: 4 f.write(','.join([str(b) for b in a]))
#test.txt 1,2,3,4,5

投稿2020/04/12 06:37

meg_

総合スコア10605

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

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

arron

2020/04/12 07:36

file.write(','.join([str(s)+"\n"])) のように変えてみましたが、やはり[]が残ってしまいます。 コメントの中のntoさんのreplaceを使った方法でとりあえず解決しました。
meg_

2020/04/12 08:07

改行したいなら「f.write(','.join([str(b) for b in a]) + '\n')」です。str(s)ではなく[str(b) for b in s]ですよ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問