首页 > 解决方案 > 如何在 Python 中删除 \n 换行符?

问题描述

我想比较 23andme 的一些基因组序列原始数据,并为此使用 Python。

我已经像这样导入了我的数据:

import pandas as pd
import os

sample_1 = pd.read_csv('sample_1.txt', delimiter ='\t', dtype={"rsid": str, "chromosome": str, "position": int, "genotype": str})
sample_2 = pd.read_csv('sample_2_new.txt', delimiter ='\t', dtype={"rsid": str, "chromosome": str, "position": int, "genotype": str})

现在,我只想保护 Y 染色体,以便稍后进行 BLAST 比较。所以我需要我的数据框一列的字符串条目作为这样的连续字符串"AATTGCTT..."

y_1 = sample_1.loc[sample_5['chromosome'] == "Y"]
y_1_blast = y_1.to_string(columns = ["genotype"], header=False, index=False, index_names=False)

由于'\n'也包含输出,我尝试通过以下方式删除分隔符:

y_1_blast.rstrip()

但这不起作用。我也得到了整个输出,' ... '这让我想知道这是否是问题所在。

标签: pythonpandasbioinformatics

解决方案


是的 !如果输出真的是一个连续的字符串,你可以选择正则表达式替换 startegy。

import re

# TEST DATA #
y_1_blast = "\nATCG\nATCT\nGAGC\nATGAG\nACGACGTG"

y_1_blast = re.sub('\n', '', y_1_blast)

'ATCGATCTGAGCATGAGACGACGTG'

甚至更安全(即删除除任何 ATGC 字母之外的所有字母)

import re

# TEST DATA #
y_1_blast = "..\nATC.G ATCT\n\nGA..GC ATG_AG\nAC_GA  _CGTG.."

y_1_blast = re.sub("[^ATGC]","",y_1_blast)

'ATCGATCTGAGCATGAGACGACGTG'

推荐阅读