读取文件返回单词和空格

2024-06-16 10:11:02 发布

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

我想用python读取一个文件并返回文件中的单词和空格。 我不想把卡拉克特传给卡拉克特

我已经使用了:

def openfile(name_file) :
   with open(name_file) as f :
      l = re.split(' ',re.sub('\n',' ',f.read()))
      sentence = []
      for i in l : 
         sentence.append(i)
      print(sentence)

输入:

  Clustalo O(1.2.4) multiple sequence alignement
  
  id_ref     ATGFDFVREF--SFERFSRSFVSRVSVSVRVSFDFVEGREHEHZ
  id_iso     ADEFZRVSDFVSSVDFSVSEFVDCSZF--ZEVVDSVZRVEFDFV
             -------------- ------- -------------  -  ---

我的脚本上的输出:

 ['clustal','O(1.2.4)','multiple','sequence','alignement', ect...]

预期产出:

['clustal','','O(1.2.4)','','multiple','','sequence','','alignement',ect...]

Tags: 文件namereiddefmultiple单词sentence
3条回答

这不是最好的解决方案,但您可以这样做:

import re


def openfile(name_file):
    with open(name_file) as f:

        original_list = []
        lines = f.readlines()
        for line in lines:
            li = line.split(' ')
            for item in li:
                if item != '':
                    original_list.append(item.strip('\n'))
                    original_list.append('')

        print(original_list)

输出:

['clustal', '', 'O(1.2.4)', '', 'multiple', '', 'sequence', '', 'alignement10', ''] 

如果最后不需要额外的'',只需使用

original_list.pop()

在打印结束时添加一个参数

def openfile(name_file) :
   with open(name_file) as f :
      l = re.split(' ',re.sub('\n',' ',f.read()))
      for i in l : 
         print('i :', i, '\ni : ')

你的代码还可以,但是你应该注意一些事情

首先是包含字符的txt文件

在操作系统中,如果转到下一行,每一行都以\n结尾

但是这里没有任何新行字符,因为它是一行

第二re.split根据您给出的模式创建一个字符列表,这样您就可以给它一个

包含空格字符的模式,因此字符串将在空格上拆分

并且输出列表将不包含空格!因此,有两种方法可以使代码正常工作

选项1

如果txt文件中的所有字符都在一行中

将每个空格替换为两个空格,以便在每个字符之间生成一个空字符串

像这样

txt文件

Clustalo O(1.2.4) multiple sequence alignement

代码.py

进口稀土

def openfile(name_file) :
   with open(name_file, "r") as f :
      l = re.split(' ',re.sub(' ','  ',f.read()))
      for i in l : 
         print('i :', i)

输出

i : Clustalo
i :
i : O(1.2.4)
i :
i : multiple
i :
i : sequence
i :
i : alignement

选项2

如果你的txt文件是这样的

Clustalo
O(1.2.4)
multiple
sequence
alignement

将每个\n字符替换为两个空格(注意:不要在每个字符后面加空格,或将替换字符改为一个空格)

代码.py

import re

def openfile(name_file) :
   with open(name_file, "r") as f :
      l = re.split(' ',re.sub('\n','  ',f.read()))
      for i in l : 
         print('i :', i)

输出

i : Clustalo
i :
i : O(1.2.4)
i :
i : multiple
i :
i : sequence
i :
i : alignement

相关问题 更多 >