Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 11.02.2019, 13:11   #1
satfan
Пользователь
 
Регистрация: 11.02.2019
Сообщений: 10
Репутация: 10
По умолчанию Ошибка - IndentationError: unindent does not match any outer indentation level

Код:
# -*- coding: UTF-8 -*-

import re
import sys



try:

    in_m3u = str(sys.argv[1]);
   print ("Received input is : ", in_m3u)
except:
    print "Input 2 args as ./111.py input.m3u"
    

list = [] # Список с содкржимым входящего файла
list2 = []
namen_list=[]
new_list=[]


def udalenie_pust(input_file):
    for line in input_file.readlines():
        line = line.strip()
        if line == '':
	    print ""
            pass
        if line == '#EXTM3U':
	    print ""
            pass
        else:
            list.append(line + '\n')
    file.close()
    return list       

def full_dup():
    a = len(list)
    a1 = a
    i = 0
    while i < a-1:
        b = list[i]        
        f = [index for index,val in enumerate(list) if val==b ]
        print 'f',f
        print "b", b
        k=len(f)
        while k > 1:
            print k, f[k-1]
            try:
                list.pop(f[k-1])
            except:
                Exception
            k = k-1
        a = len(list)
        i = i + 1
        print a, i 
    return list 

def adr_dup():# Удаление дубликатов по адресу
    a = len(new_list)
    i = 0
    while i < a-1:
        b = new_list[i]  
        http = re.search('^http://', str(b))       
        if http != None:	
            f = [index for index,val in enumerate(new_list) if val==b ]
            k=len(f)  
            h=0
            while k > 1:
                #print "F:",f,'\n',"H:", h,'\n' "f[h]:", f[h],'\n' "list[f[h]-1]:", new_list[f[h]-1] ,'\n' "list[f[h]]:", new_list[f[h]] 
                new_list[f[h]] = ""
                new_list[f[h]-1] = ""
                f = [index for index,val in enumerate(new_list) if val==b ]
                k=len(f)  
                if k == 1:
                    pass
                else:
                    k = k-1
                #h=h+1

        a = len(new_list)
        i = i + 1
    return new_list


def nam_list():
    print "start create namen_list"
    a = len(list)
    a1 = a
    i = 0
    while i < a-1: # Создаём список из чистых имён каналов и добавляем каждую вторую пустую строку
        b = str(list[i])  
        findest1 = b.split(',')      
        namen=findest1[len(findest1)-1].strip()
        n = re.search('^#EXTINF', str(b))    
        if n:
            if str(namen) != ' ':
                findest1 = str(b).split(',')                
                nam=findest1[len(findest1)-1]
                namen = nam.strip()                
                namen_list.append(namen)
                namen_list.append('')
            else:
                pass
        i = i + 1 
 #   print namen_list, len(namen_list)
    return namen_list



    
 
def name_dup(): 

    a = len(list) # Количечтво в исходном списке   
    i = 0 # Счётчик для основного списка LIST
    while i < a-1:# Начинаеи перебирпть основной список          
        b=list[i] # Элемент из основного списка например #EXTINF:0, Первый   
        b1 = list[i+1]
        n=namen_list[i]
        f = [index for index,val in enumerate(namen_list) if val==n ]
        k=len(f) 
        if k > 1 and n !='':# Есть дубли
            #print "Дубль", f,k,n
            t=0
            while t <= k-1: # Работаем со списком дубликатов 
                #print "Добавляем дубль"
                #print "1", list[f[t]]
                pure_nam = list[f[t]].split(',')
                pure_nam1 = pure_nam[1].strip() 
                pure_nam2 = str(pure_nam[0])+','+str(pure_nam1)+'\n'
                #print "2", pure_nam2
                new_list.append(pure_nam2)
                new_list.append(list[f[t]+1])
                t=t+1
#            
#            #print "2", list[f[1]],list[f[1]+1]
        if k == 1 and n !='':
            #print "Один", list
            pure_nam = b.split(',')
	    #print "pure_nam", pure_nam 
            pure_nam1 = pure_nam[1].strip() 
            p_nam2 = str(pure_nam[0])+','+str(pure_nam1)+'\n'
            new_list.append(p_nam2)
            new_list.append(b1)

            
             
        i=i+1      
      
    return new_list            
            
            
        

    
def zapis_out_file(In_list):
    i_m3u = in_m3u.split('.m3u')[0]
    out_m3u = i_m3u+'_pure'+'.m3u'
    file1 = open(out_m3u, "w")
    a = len(In_list)
    print "Save In_list", a
 #   file1.write("#EXTM3U")
    i = 0
    while i <= a-1:
        file1.write(str(In_list[i]))
        i = i + 1       
    file1.close() 


file = open(in_m3u, "r")        
udalenie_pust(file)    
nam_list()
name_dup()
adr_dup() 
zapis_out_file(new_list)
========================
Проверял на сайте http://codepad.org
Выдало это:
Line 11
print ("Received input is : ", in_m3u)
^
IndentationError: unindent does not match any outer indentation level
satfan вне форума   Ответить с цитированием
Старый 11.02.2019, 13:20   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 14,658
Репутация: 2631
По умолчанию

Ну так смотрите 11 строку
Код:
    in_m3u = str(sys.argv[1]);
   print ("Received input is : ", in_m3u)
Видите разное кол-во отступов? Разные уровни вложенности, которые не соответствуют друг другу? О чем вам и написали.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 11.02.2019, 13:41   #3
satfan
Пользователь
 
Регистрация: 11.02.2019
Сообщений: 10
Репутация: 10
По умолчанию Помогите найти ошибку

Первую ошибку исправил.
Появилась другая:
Код:
Input 2 args as ./111.py input.m3u
Traceback (most recent call last):
  Line 170, in <module>
    file = open(in_m3u, "r")        
NameError: name 'in_m3u' is not defined
=================================== =
Извините p51x, я самый начинающий --- помогите решить.
Заранее спасибо за быстрый ответ.
satfan вне форума   Ответить с цитированием
Старый 11.02.2019, 13:55   #4
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 14,658
Репутация: 2631
По умолчанию

Ну так in_m3u определен у вас в блоке try, а open используется вне.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
builtins.IndentationError: unindent does not match any outer indentation level (x-wingide-python-shell://143598656/2, line 52) zincked Python 1 06.06.2018 03:03
Множество запросов через LEFT OUTER JOIN yu_kuvshinov БД в Delphi 6 14.03.2014 16:11
Ошибка Could not find a match for 'Pos(TStringStream *,const char *)' bulldog5293 C/C++ Сетевое программирование 1 09.04.2011 12:19
Работают ли вложенные OUTER для BDE Paradox как это работает в Access? Ecosasha SQL, базы данных 1 02.12.2010 10:30
ошибка: no match for ‘operator<<’ in ‘std::operator<< [with _Traits = std::char_traits<char> Critter Общие вопросы C/C++ 5 08.08.2010 23:38


23:17.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.