使用文件名替换文件中的文本

时间:2017-08-01 12:56:18

标签: python csv text replace

基本上我试图编写一段代码,用文件将文本更改为文件本身的名称。基本上我有很多文件EMBOSS_001作为第一段文本,例如。(EMBOSS_001|296133516|ref|YP_003640763.1|,33.06,248,157,7,1,243,1,244,7e-31, 121)。我想将其更改为文件的名称。我的文件名从fp1_blast_output.csvfp11000_blast_output.csv不等。我想将文件中文本的EMBOSS部分更改为文件的fp()部分。这就是我所拥有的,但遗憾的是它无法正常工作!

from glob import glob

fasta_files = glob('*output.csv')
print(fasta_files)

for fname in fasta_files:
    with open(fname) as input1, open('modified/{}'.format(fname), 'w') as output:
        data = input1.read()
        data = data.replace('EMBOSS_001',fname.split('._blast_output.csv')[0])
        output.write(data)

最终我希望得到的是:

fp()|296133516|ref|YP_003640763.1|,33.06,248,157,7,1,243,1,244,7e-31, 121

3 个答案:

答案 0 :(得分:0)

这有用吗?

from glob import glob

fasta_files = glob('*output.csv')
print(fasta_files)

for fname in fasta_files:
    with open(fname) as input1, open('modified/{}'.format(fname), 'w') as output:
        data = input1.read()
        new_name = fname.split('_blast_output.csv')[0]
        changed_data = data.replace('EMBOSS_001',new_name)
        output.write(changed_data)

答案 1 :(得分:0)

一般来说, - 我希望这实际上解决了你的问题, - 如果你想将所有.csv文件中的部分文本更改为这些文件的名称(减去'.csv'部分),这就是我的方式会接近它:

from glob import glob

fasta_files = glob('*.csv')

for fname in fasta_files:
    with open(fname, 'r') as finput:
        data = finput.read()

    data = data.replace('EMBOSS_001', fname[:-4])             

    with open('modified/{}'.format(), 'w') as output:            
        output.write(data)  

答案 2 :(得分:-1)

您的示例输入和预期/期望的结果是相同的。 您可以尝试以下方法:

with open(fname) as input1, open('modified/{}'.format(fname), 'w') as output:
    new_fname = fname.split('.aln_blast_output.csv')[0]
    for line_to_change in input1.readlines():
        output.write(line_to_change.replace('EMBOSS_001', new_fname))

并且还请发布您的错误。