#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. Спасибо вам за ваш оперативный ответ. Я хочу решение в том же коде, потому что в этом задействовано много другого кода.