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

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

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

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

Q&A

1回答

293閲覧

文字数をカウントしたい

Male_soprano

総合スコア10

Python 3.x

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

0グッド

1クリップ

投稿2020/09/05 02:55

編集2022/01/12 10:55

前提・実現したいこと

下記のテキストファイルのうち,">"を含む行ではない,Mから始まる大文字の文字数(106, 109, 109)を測定したいのですが,以下のエラーが出ました.
文字数の出力にどのように繋げればいいのか,お知恵を貸していただけますと幸いです.宜しくお願いします.

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

エラー

File "seq_length.py", line 7 output_line = '%s\t%i' % \ (seq_record.id, len(seq_record)) ^ SyntaxError: unexpected character after line continuation character

該当のソースコード

python

1#!/usr/bin/python 2# -*- coding: utf-8 -*- 3from Bio import SeqIO 4import sys 5cmdargs = str(sys.argv) 6for seq_record in SeqIO.parse(str(sys.argv[1]), "test.fasta"): 7 output_line = '%s\t%i' % \ (seq_record.id, len(seq_record)) 8 print(output_line)

使用ファイル

test.fasta

1>sp|A5EVF4|HFQ_DICNV RNA-binding protein Hfq OS=Dichelobacter nodosus (strain VCS1703A) OX=246195 GN=hfq PE=3 SV=1 2MSKSQSLQDPYLNALRKERVPVSIYLVNGIKLQGQIESFDAFVILLRNNISQMVYKHAVS 3TIVPSRNIHLSREEMGLEDEAGEEISAEYTPNAEGQAEATADPLYD 4>sp|B0TZB1|HFQ_FRAP2 RNA-binding protein Hfq OS=Francisella philomiragia subsp. philomiragia (strain ATCC 25017) OX=484022 GN=hfq PE=3 SV=1 5MSRISSLQDPFLNALRKEKVSVSVYLVNGIKLQGQVEAFDQFCIVLRNTVNQMVYKHAIS 6TIVPAKSVRMVYSSFNPYHQNANDDQDENVDDIHSDELEVQENQENINE 7>sp|Q5NH41|HFQ_FRATT RNA-binding protein Hfq OS=Francisella tularensis subsp. tularensis (strain SCHU S4 / Schu 4) OX=177416 GN=hfq PE=3 SV=1 8MSRISSLQDPFLNALRKEKVSVSVYLVNGIKLQGQVEAFDQFCIVLRNTVNQMVYKHAIS 9TIVPAKSVRMIYNSFNPYHQNSNDEQDENVDDIHSDDLEIQENEGNIHE 10

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

macOS10.15.4 Python3.7.3 Atom

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

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

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

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

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

meg_

2020/09/05 04:01

> 以下のエラーが出ました. どれですか??
Male_soprano

2020/09/08 19:35

返信遅くなり大変失礼致しました.追加しましたのでご確認いただけますと幸いです.
meg_

2020/09/08 22:09

「output_line = '%s\t%i' % \ (seq_record.id, len(seq_record))」の「\」を削除したら、質問のエラー「SyntaxError: unexpected character after line continuation character」は無くなりました。
guest

回答1

0

公式ドキュメントや解説記事等少しでも調べられましたでしょうか。

Package SeqIO
データベースからダウンロードしたファイルを処理する BioPython モジュールSeqIO
使い方が全く違うように思います。

Python

1SeqIO.parse(str(sys.argv[1]), "test.fasta")

ここは何をなさりたいのでしょうか、仕様と違います。プログラムの引数として読み込むファイルを指定するのと
test.fasta ファイルを読み込むのが混同されている。仕様としては ファイル名, ファイル形式指定 です。
質問文にもありませんが test.fasta ファイルが例示されているところからこのファイルを読み込むと仮定します。

Python

1output_line = '%s\t%i' % \ (seq_record.id, len(seq_record))

これはPythonの範疇ですが何をなさりたいのか?ですがおそらく FASTAのヘッダー<TAB>配列長かと思いますが
これでは動きません。

行の指定含め自動化

の意味がわかりませんが、恐らく行指定するのではなく、行指定せずともファイルの最初から最後まで読み込んでヘッダーと配列長を表示と仮定して進めます

上記でよろしいとすると

Python

1from Bio import SeqIO 2for seq_record in SeqIO.parse("test.fasta", "fasta"): 3 print("{}¥t{}".format(seq_record.id, len(seq_record)))

でよいかと思います。おまけですがPython3以降では % 構文よりも format を使った方がいいらしいです。

投稿2020/09/05 09:28

aokikenichi

総合スコア2210

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問