Как удалить \ n символ новой строки в Python? - PullRequest
0 голосов
/ 15 апреля 2020

Я хочу сравнить необработанные данные геномной последовательности по 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()

но это не работает. Я также получаю весь вывод в окружении ' ... ', что заставляет меня задуматься, не в этом ли проблема.

1 Ответ

0 голосов
/ 19 апреля 2020

Да! Если выходные данные на самом деле являются непрерывной строкой, вы можете выбрать замещающую стратегию Regular Expression.

import re

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

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

'ATCGATCTGAGCATGAGACGACGTG'

или даже более защищенную (т.е. удалить все, кроме букв ATG C)

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'
...