python — передать одинарную кавычку в качестве значения, если значение пустое или null

#python-3.x

#python-3.x

Вопрос:

У меня есть входной файл, подобный приведенному ниже, и я читаю файл и проверяю длину файла и ниже и хочу проверить, является ли arg_list [3] нулевым или пустым, а затем передать » как значение в arg_list [3].

                                   1|2|3| |5
                                  
  

Код приведен ниже:

                                   f=open(input,'r')
                                  for line in f:
                                      arg_list=line.split('|')
                                      if len(arg_list) == 5:
                                          a=(arg_list[0].strip())
                                          b=(arg_list[1].strip())
                                          c=(arg_list[2].strip())
                                          d=(arg_list[3].strip())
                                          e=(arg_list[4].strip())
                                          w=open(output,'w')
                                          c.write("arg1=%sn" % (a))
                                          c.write("arg2=%sn" % (b))
                                          c.write("arg3=%sn" % (c))
                                          c.write("arg4=%sn" % (d))
                                          c.write("arg5=%sn" % (e))
                                      f.close()
                
  

ожидаемый результат (output) выглядит следующим образом

                                        arg1=1
                                       arg2=2
                                       arg3=3
                                       arg4=''
                                       arg5=5
  

Приветствуются любые идеи

Ответ №1:

Вы можете использовать {!r} in str.format для получения вашего результата:

Если a1.txt содержит:

                               1|2|3| |5
  

затем:

 with open('a1.txt', 'r') as f_in, open('a2.txt', 'w') as f_out:

    for line in f_in:
        if line.strip() == '':
            continue

        s = map(lambda x: '' if x.strip()=='' else int(x), s.split('|'))

        for i, v in enumerate(s, 1):
            print('arg{}={!r}'.format(i, v), file=f_out)
  

создает a2.txt с содержимым:

 arg1=1
arg2=2
arg3=3
arg4=''
arg5=5
  

Комментарии:

1. Спасибо вам за ваш оперативный ответ. Я хочу решение в том же коде, потому что в этом задействовано много другого кода.