为什么python用汉字书写?

2024-04-26 03:39:14 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我关于堆栈溢出的第一个问题,所以如果我的问题格式不正确,我想先道歉。我不是特别有经验的编码,但我正在努力解决一个具体的问题,我的工作。在

我正在尝试替换一个大的fasta文件的头文件(用于对齐DNA序列)。我有一个包含fasta对齐的txt文件(对齐.txt),其内容如下:

>418035201_b1_168_m12_gag__Assembly_8
ATGGGTGCGAGAGCGTCAGTATTAAGTGGGGGAAA......

>418035201_b1_168_m12_gag__Assembly_19
ATGGGTGCGAGAGCGTCAGTATTAAGTGGGGGAAA......

我还有一个包含所需名称的文本文件(新标题.txt),其内容如下:

^{pr2}$

我正在尝试替换对齐.txt包含新标题的文件新标题.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
䄊䝔䝇䝔䝃䝁䝁䝃䍔䝁䅔呔䅁呇䝇䝇䅇䅁呁䅔䅇䝔䅃䝔䝇䝁䅁䅁呔....

“line”正在从罗马字符改为中文字符。它不应该是汉字,我也不知道为什么会这样!在

当“line”被打印到控制台时,它会正确地打印它。一、 e

ATGGGTGCGAGAGCGTCAGTATTAAGTGGGGGAAAATTAGATGCGTGGGAGAA....

所以我相信这一定和它的写作方式有关。在

如果有人能在这方面帮助我或提供一些见解,我将不胜感激,谢谢。在

[编辑:现在解决。见下文。谢谢大家!]在


Tags: 文件txt标题内容closelineassemblyopen
2条回答

Python似乎支持open()函数中的“encoding”参数来覆盖默认的编码格式。如果您知道输入和输出文件的正确编码是什么,您应该能够通过添加以下内容来更正它(在您的情况下,用正确的编码替换实际的编码):

newnames= open('newheaders.txt','r', encoding='ascii')
newfasta= open('newfasta.txt', 'w', encoding='utf_8')

PS:问题似乎是由于Python3在默认情况下对文本文件I/O使用Unicode,这是对Python2.x的一个更改

谢谢大家的帮助。现在解决了(本质上我是个白痴)。。。在

我如何修复它:

  1. 安装的Python3
  2. 将这两个.txt文件重新保存为Unicode UTF-8,并使用Unix(LF)换行符。在
  3. 更改“#”!/usr/bin/env python“到”#!/脚本开头的usr/bin/env python3”。在
  4. 运行python3/Users/Sophie/Desktop/AttemptToRename/replacenames.py从命令行。在

而且成功了!在

我不确定是否所有这些步骤都是必要的,或者只是其中的一部分,但它现在正在按计划工作。再次感谢你的帮助。现在就去投票![编辑:显然我的支持票没有显示出来,因为我的名声很低。。。:/]

相关问题 更多 >

    热门问题