#python #split #re
#python #разделение #python-re
Вопрос:
У меня есть несколько файлов txt, которые состоят из разных значений, например:
TFF,BAP,VAP,DNAAF5,CDKN2B,PDE2D,SLC22A19,RBPJ,STAT1,TAP2,HLA-
Вероятно, я сделал неправильное разделение в середине кода, и оно разделено на ‘-‘, поэтому, когда я дважды щелкаю по одному значению, оно выбирает всю строку до ‘-‘. Эта ошибка не влияет на функцию до этого шага. Теперь мне нужно подсчитать каждое вхождение значения с помощью «счетчика», и счетчик неверен.
Мой код:
gene_calc = r'C:UsersMrDTop'
new_dir = r'C:\Users\MrD\Br_Count\Frequency\'
for files in gene_calc:
if not os.path.exists(new_dir):
os.mkdir(new_dir)
else:
break
os.chdir(gene_calc)
for files in glob.glob(os.path.join('*.txt*')):
#print(files) # iterating over files to check if prints
with open(files) as f:
content = (line for line in f.read().splitlines())
list = Counter(Vol for Vol in content).most_common()
with open(new_dir files, "w") as output:
output.write(str(list))
папка gene_calc состоит из значений, как показано в примере выше.
Я не смог повторно разделить его (попробовал «if ‘,’ in gene_list:» или reversing .reverse(), но это уже список с кортежами)
Комментарии:
1. Мне очень трудно понять, что именно вы пытаетесь сделать. Пожалуйста, сократите свой код до абсолютного минимума, чтобы воспроизвести проблему.
2. Код хороший (по крайней мере, на мой взгляд ..) проблема в том, что я не могу считать значения, разделенные символом «, «, потому что он считается объединенным списком
3. Например: «XYZ, TGH» и «XYZ», отдельно, XYZ будет считаться как 1 с TGH (с TGH) и только 1. Ответ должен быть 2, но он разделен неправильно
4. сначала просто разделите строку:
items = line.split(',')
5. попробуйте
content = (item for line in f for item in line.split(','))
Ответ №1:
на данный момент вы подсчитываете строки
content = (line for line in f.read().splitlines())
для подсчета элементов вам нужно второе разделение на ‘,’:
content = (item for line in f for item in line.strip().split(','))