Заменить строку в текстовом файле с различными сценариями заменыPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Заменить строку в текстовом файле с различными сценариями замены

Сообщение Anonymous »

У меня есть текстовый файл, и мне нужно заменить значение после * в разных сценариях. Например, в приведенных ниже данных, таких как 12*5 7*7 39*8, мне нужно заменить их на 12*1000 7*2000 39*3000. Это означает, что если значение после * равно 5, оно заменяется на 1000, если значение равно 7, оно заменяется на 2000, если значение равно 8, оно заменяется на 3000.
Я сделал некоторые коды, например тезисы, они не работают эффективно, поэтому мне приходится работать с каждым числом, и возникают какие-то ошибки, и я не знаю где?
Есть идеи, как это сделать работаешь?
import re
file='input.txt'
file_write='output.txt'

def replace_string_cases_usename(item):
pattern_general=r"(?P\d+)\*(?P\d+)"
result=re.findall(pattern_general,item)[0]
str_perm=result[1]
str_num=result[0]
# str_perm=result.group('perm')
print('found str perm is ',str_perm)
if str_perm=='5':
result_replaced=re.sub(pattern_general,'\g*1000',item) # use \g outside the pattern to refer to searching string
elif str_perm=='7':
result_replaced=re.sub(pattern_general,'\g*2000',item)
elif str_perm=='8':
result_replaced=re.sub(pattern_general,'\g*3000',item)
else:
result_replaced=re.sub(pattern_general,'\g*4000',item)

print('original=',item)
print('fixed=',result_replaced)

(result_replaced,str_num)

saved_list_all_lines=[]
with open(file,'r') as infile:
all_lines=infile.readlines()
i=0
x_item=0
x_item_single=0
for line in all_lines:
i+=1
# print('line=',i)
saved_list_this_line=[]
line1=line.strip() # strip both leading and tailing white space
item_list=line1.split(' ')
for item in item_list:
# print(item)
if '*' in item:
(result_replaced,str_num)=replace_string_cases_usename(item)
saved_list_this_line.append(result_replaced)
x_item+=int(float(str_num))
else:
print('single item is',item)
x_item_single+=1
result_replaced=replace_string_cases_singlenum(item)
saved_list_this_line.append(result_replaced)
x_item+=1
# saved_list_this_line.append(item) # testing without replace
# add line return at the end
saved_list_this_line.append('\n')
#join all the string into a big string to represent one line
str_thisline=' '.join(saved_list_this_line)
print('This line string are ',str_thisline)
#save this line big string into the other list
saved_list_all_lines.append(str_thisline)
print('Total num of items is ',x_item)
print('The num of single items is ',x_item_single)
print('Final String are ',saved_list_all_lines)

#now need to write saved data back to another file
with open(file_write,'w') as outfile:
for str_line in saved_list_all_lines:
outfile.write(str_line)

12*5 7*7 39*8 255 10*5 39*4 74*3 83*255 31*2 22*3 2*4 3 10*5 6*7 38*8 255 10*5 39*4 69*3 95*255 20*2 22*3 4 4*3 4 9*5 6*7 40*8 255 12*5 39*4 56*3 103*255 18*2 22*3 4 2*3 4 5 4 11*5 5*7 44*8 255 18*5 34*4 50*3 108*255 17*2 18*3 4 2*3 3*4 13*5 4*7 48*8 25*5 31*4 43*3 112*255 17*2 18*3 4*4 5 4 11*5 4*7 50*8 2*6 25*5 31*4 35*3 119*255 13*2 21*3 6*4 12*5 3*7 50*8 99*255 37*3 4 4*3 6*4 4*5 4 55*5 14*3 5 4*3 5 4*3 7 2*3 7 8 7 27*8 52*9 98*255 34*3 11*4 81*5
7*7 8 7 18*8 66*9 93*255 36*3 9*4 79*5 6 3*7 6 7*7 16*8 63*9 9*11


Подробнее здесь: https://stackoverflow.com/questions/793 ... -scenarios
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Заменить строку в текстовом файле с различными сценариями замены
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Заменить последнюю строку в текстовом файле SD-карты (gpx) на esp32
    Anonymous » » в форуме C++
    0 Ответы
    73 Просмотры
    Последнее сообщение Anonymous
  • Java заменить строку в текстовом файле
    Anonymous » » в форуме JAVA
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Использование столбцов CSV для поиска и замены в текстовом файле
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Несколько экземпляров одного класса DBContext во время выполнения с различными DBContextOptions с различными реализациям
    Anonymous » » в форуме C#
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»