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

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

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

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Q&A

解決済

1回答

794閲覧

特定の列を連番にする

退会済みユーザー

退会済みユーザー

総合スコア0

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

0グッド

0クリップ

投稿2018/10/30 07:29

(file1) ATOM  1 ATOM  2 ATOM  3 ATOM  4 ATOM  1 ATOM  2 ATOM  3 ATOM  4 ATOM  5 ATOM  6 ATOM 18 ATOM 19 ATOM 20

このようなファイルの2列目を連番にしたいです。

(得たい結果) ATOM  1 ATOM  2 ATOM  3 ATOM  4 ATOM  5 ATOM  6 ATOM  7 ATOM  8 ATOM  9 ATOM 10 ATOM 11 ATOM 12 ATOM 13

方法として、pandasでcsvとして取得→2列目を1ずつ増やしていくというのをかんがえたのですが、できれば、pandasを使わずに処理したいです。
また、行数を取得してrange関数を使うことも考えましたが、うまくいっていません。

何かいい方法がありましたら、ご教示ください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

組み込み関数だけでやるなら、このような感じになります。

# 読み込む。 with open('test.txt') as f: data = [line.split() for line in f.read().splitlines()] print(data) # 連番にする。 for i, row in enumerate(data, 1): row[1] = str(i) print(data) # 書き込む。 with open('output.txt', 'w') as f: for row in data: f.write(' '.join(row) + '\n')

出力

[['ATOM', '1'], ['ATOM', '2'], ['ATOM', '3'], ['ATOM', '4'], ['ATOM', '1'], ['ATOM', '2'], ['ATOM', '3'], ['ATOM', '4'], ['ATOM', '5'], ['ATOM', '6'], ['ATOM', '18'], ['ATOM', '19']] [['ATOM', '1'], ['ATOM', '2'], ['ATOM', '3'], ['ATOM', '4'], ['ATOM', '5'], ['ATOM', '6'], ['ATOM', '7'], ['ATOM', '8'], ['ATOM', '9'], ['ATOM', '10'], ['ATOM', '11'], ['ATOM', '12']]

入力ファイル

ATOM 1 ATOM 2 ATOM 3 ATOM 4 ATOM 1 ATOM 2 ATOM 3 ATOM 4 ATOM 5 ATOM 6 ATOM 18 ATOM 19 ATOM 20

出力ファイル

ATOM 1 ATOM 2 ATOM 3 ATOM 4 ATOM 5 ATOM 6 ATOM 7 ATOM 8 ATOM 9 ATOM 10 ATOM 11 ATOM 12

投稿2018/10/30 07:42

編集2018/10/30 07:43
tiitoi

総合スコア21954

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問