これはStack Overflowに関する私の最初の質問ですので、私の質問が正しくフォーマットされていない場合、まず謝りたいと思います。私はコーディングに関して特に経験はありませんが、私の仕事で特定の問題を解決しようとしています。なぜPythonが中国語文字で書き出していますか?
(DNA配列のアライメントに使用される)大きなファーストファイルのヘッダーを置き換えようとしています。私はこのような内容を有するFASTAアライメント(alignment.txt)を含むTXTファイルを持っている:
>418035201_b1_168_m12_gag__Assembly_8
ATGGGTGCGAGAGCGTCAGTATTAAGTGGGGGAAA......
>418035201_b1_168_m12_gag__Assembly_19
ATGGGTGCGAGAGCGTCAGTATTAAGTGGGGGAAA......
Iはまた、このような内容を持つ所望の名前(newheaders.txt)を含むテキストファイルを有します。
>418035201_pM_s38_B168_m12_gag_c08_M13F_X00_consensus
>418035201_pM_s38_B168_m12_gag_c19_M13F_X00_consensus
....
私はnewheaders.txtファイルに新しいヘッダを持つalignment.txtファイルのヘッダー(「>」から始まる行)を交換しようとしています。
私は、次の内容でPythonスクリプトを持っている:
#!/usr/bin/env python
fasta= open('alignment.txt','r')
newnames= open('newheaders.txt','r')
newfasta= open('newfasta.txt', 'w')
for line in fasta:
if line.startswith('>'):
newname= newnames.readline()
newfasta.write(newname)
else:
newfasta.write(line)
print line
fasta.close()
newnames.close()
newfasta.close()
私はこれを実行すると、私は次の出力を得る:
>418035201_pM_s38_B168_m12_gag_c08_M13F_X00_consensus
䄊䝔䝇䝔䝃䝁䝁䝃䍔䝁䅔呔䅁呇䝇䝇䅇䅁呁䅔䅇䝔䅃䝔䝇䅁䅁䅁呔....
>418035201_pM_s38_B168_m12_gag_c19_M13F_X00_consensus
䄊䝔䝇䝔䝃䝁䝁䝃䍔䝁䅔呔䅁呇䝇䝇䅇䅁呁䅔䅇䝔䅃䝔䝇䝁䅁䅁呔....
「行」は、中国へのローマ字から変更されています文字。それは漢字ではいけません。私はなぜこのようなことが起こっているのかは分かりません。
「行」がコンソールに印刷されると、正しく印刷されます。私。
だから私はそれが書いている方法とは関係があると信じています。
誰かが私にこれを手伝ったり、いくつかの洞察力を与えてくれたら、私は大いに感謝します。ありがとうございます。
[編集:今解決されました。下記参照。みんなありがとう!]
私の推測では、ファイルをUTF-16と解釈して2バイトのペア単一の文字として解釈されます。 –
コードは私のシステムで動作し、IDEや何もせずに 'python2 test.py'を実行します。これを実行しているOSは何ですか? tobias_kが言っていることは、あなたのシステムがUTF-16のデフォルトのlocaleconf( '/ etc/locale.conf'と' locale-gen'を生成するために)を実行していない限り、なぜ起こるのかわかりません。 Linuxを実行している場合、コンソールに 'locale -a'の出力を与えてください。 – Torxed
私はMacOS Sierra 10.12で実行しています。私はPython 2.7を実行していたので、python3をインストールしました。 :私はそれを実行しようとすると、しかし、今、私は次のエラーを取得しています「にSyntaxError:無効な構文を >>> /Users/Sophie/Desktop/AttemptToRename/replacenames.py ファイル」」、行1 /ユーザ/ソフィー/デスクトップ/ AttemptToRename/replacenames.py ^ にSyntaxError:無効な構文 >>> 「 –
Sophie