Исправление неправильного разделения в txt, python

#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(','))