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

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

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

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

Q&A

解決済

2回答

669閲覧

ファイルの整形をしたい

Male_soprano

総合スコア10

Python 3.x

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

0グッド

0クリップ

投稿2020/07/13 09:27

編集2020/07/13 11:36

前提・実現したいこと

下記のテキストファイルのうち,例えば大文字の羅列の21文字目から30文字目を抽出して,">"以降の行から改行して追加したいです.
しかし,ファイルの行を1行づつ読み込んだあとの作業を具体的にどうするのか,全く見当がつきません.

尚,このファイルは約1000行のファイルを縮小・簡略化したものである為,行の指定含め自動化してくれるような完成形の一例を示していただけますと幸いです.宜しくお願いします.

該当のソースコード

python

1#!/usr/bin/python 2# -*- coding: utf-8 -*- 3lines=[] 4i=0 5f=open('fasta,txt') 6for line in f: 7 if i in lines: 8 print i 9 i+=1

使用ファイル (処理前)

txt

1>Abe | 2MAKGQSLQDPFLNALRRERVPVSIYLVNGIKLQGQIESFDQFVILLKNTVSQMVYKHAIS 3TVVPSRPVSHHSNNAGGGTSSNYHHGSSAQNTSAQQDSEETE 4>Sato | 5MAKGQSLQDPFLNALRRERVPVSIYLVNGIKLQGQIESFDQFVILLKNTVSQMVYKHAIS 6TVVPSRPVSHHSNNAGGGASNNYHHGSNAQGSTAQQDSEETE 7>Seo | 8MSKGHSLQDPYLNTLRKERVPVSIYLVNGIKLQGQIESFDQFVILLKNTVSQMVYKHAIS 9TVVPSRPVRLPSGDQPAEPGNA

理想 (処理後)

txt

1>Abe | 2FLNALRRERV 3>Sato | 4FLNALRRERV 5>Seo | 6YLNTLRKERV

補足情報(FW/ツールのバージョンなど)

macOS10.15.4 Python3.7.3 Atom

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

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

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

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

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

aokikenichi

2020/07/13 09:41

「Python 文字列抽出」では検索されましたでしょうか
Male_soprano

2020/07/13 11:32

勿論です しかし,当方Python初心者で,どのようにファイル形式を崩さずに指定した複数の行に対して同時に処理を行うのか全く想像がつかない為,質問させていただきました.
tiitoi

2020/07/13 11:51 編集

以下の文字列の中に改行が入っていますが、これは改行なしに1つの文字列として認識して、21文字目から30文字目という意味でしょうか? MAKGQSLQDPFLNALRRERVPVSIYLVNGIKLQGQIESFDQFVILLKNTVSQMVYKHAIS<改行> TVVPSRPVSHHSNNAGGGTSSNYHHGSSAQNTSAQQDSEETE は以下と解釈? MAKGQSLQDPFLNALRRERVPVSIYLVNGIKLQGQIESFDQFVILLKNTVSQMVYKHAISTVVPSRPVSHHSNNAGGGTSSNYHHGSSAQNTSAQQDSEETE
Male_soprano

2020/07/13 15:02

そうです.説明が足りず失礼しました.
guest

回答2

0

ベストアンサー

以下の意図であっていますか?

python

1import re 2 3slice_range = slice(10, 20) # 抽出範囲 4input_path = "sample.txt" 5output_path = "output.txt" 6 7with open(input_path) as f: 8 text = f.read() 9 10# 文字列の途中の改行を消す 11text = re.sub(r"([a-zA-Z])\n([a-zA-Z])", r"\1\2", text) 12 13with open(output_path, "w") as f: 14 for line in text.splitlines(): 15 if line.startswith(">"): 16 # > で始まる行はそのまま出力 17 f.write(line + "\n") 18 else: 19 # それ以外の行は指定範囲を出力 20 f.write(line[slice_range] + "\n")

txt

1>Abe | 2FLNALRRERVP 3>Sato | 4FLNALRRERVP 5>Seo | 6YLNTLRKERVP

投稿2020/07/13 12:10

編集2020/07/13 12:11
tiitoi

総合スコア21956

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

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

Male_soprano

2020/07/13 15:01

有難うございます! 非常に助かります.
guest

0

これアミノ酸配列でしょう?
biopythonの使い方を覚えるべきだと思います。

Biopython入門 - 前編 【インストール ~ 簡単な使い方】

投稿2020/07/13 13:30

KojiDoi

総合スコア13669

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

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

Male_soprano

2020/07/13 15:06

勿論仰る通りですが,このサイトでバイオインフォ経験者を狙った質問は難しいと判断した為,pythonでの解決法を求めた次第です
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問