我正在尝试将文本文件中的行连接到两个列表中。第一个列表将包含以大写字母开头的行,第二个列表将包含以'_‘开头的行。例如:
未命名蛋白产品Bos taurus
部分牛,_CAA42669.1β-2-糖蛋白I
First list='MRTPMLLALLALATLCLAGRADAKPGDAESGKGAAFVSKQEGSEVVKRLRRYLDHWLGAPAPYPDPLEPK REVCELNPDCDELADHIGFQEAYRRFYGPV','PALVLLLGFLCHVAIAGRTCPKPDELPFSTVVPLKRTYEPGEQIVFSCQPGYVSRGGIRRFTCPLTGLWPINTLKCMPRVCPFAGILENGTVRYTTFEYPNTISFSCHTGFYLKGASSAKCTEEGKWSPDLPVCAPITCP‘
第二个列表=‘_CAA35997.1’,'_CAA42669.1‘
我已经尝试了以下方法,但似乎不起作用。我遇到了一个问题,即每个新行都存储为第一个列表中的一个新条目,而不是将这些行连接成一个条目:
for i in seq.text:
if (i=='_'):
second_list.append(i)
else:
first_list.append(i)发布于 2020-04-28 11:27:47
最简单的方法是只做当前正在做的事情,然后执行str.join(),一次将整个列表“连接”在一起,顺序如下:
for i in seq.text:
if i.startswith('_'):
second_list.append(i)
# to more closely resemble the output you put in your question,
# you might want to only append the part up to the first whitespace:
# second_list.append(i.split()[0])
else:
first_list.append(i)
first_string = ''.join(first_list)
second_string = ''.join(second_list)使用空字符串作为分隔符意味着它们直接连接在一起,中间没有任何东西。您还可以使用其他任何分隔符-逗号','、空格' '、换行符'\n'或任何组合,具体取决于您想要的输出。
发布于 2020-05-02 11:27:07
import re
a_file = open("your_path/test.txt", "r")
list1 = []
list2 = []
for line in a_file:
if not line.strip(): continue # skip the empty line
stripped_line = line.strip()
line_list = ''.join(stripped_line)
# To consider '_' in the first list
#x = re.findall(r"\b_\w+", line_list)
if (line_list.isupper()): # if (x):
list1.append(line_list)`
else:
list2.append(line_list)https://stackoverflow.com/questions/61472029
复制相似问题