Удалить пробел перед определенным символом в python? - PullRequest
0 голосов
/ 04 июля 2018

Мне было интересно, знаете ли вы лучший способ сделать это.

Эта программа использует OCR для чтения текста. Иногда пробелы появляются перед десятичной точкой, например:

{'MORTON BASSET BLK SESAME SEE': '$6.89'}
{"KELLOGG'S RICE KRISPIES": '$3.49'}
{'RAID FLY RIBBON 4PK': '$1 .49'}

как видите, перед десятичной точкой на последней записи появляется пробел. Любые идеи о том, как убрать ПРОСТО этот пробел?

Спасибо:)

РЕДАКТИРОВАТЬ: содержимое до десятичной точки может содержать различное количество пробелов. Нравится

$1    .49
$1  .49
$1 .49

Ответы [ 6 ]

0 голосов
/ 04 июля 2018

Это тривиально с разделением и объединением:

"".join("1     .49".split())

Это работает, потому что разбивается на один или несколько пробелов. Чтобы сделать это для каждого значения в словаре:

{k, "".join(v.split()) for k,v in dict_.items()}
0 голосов
/ 04 июля 2018

Используйте регулярные выражения .

import re
a_list = {"1 .49", "1   .49", "1          .49"}

for a in a_list:
  print re.sub(' +.', '.', a)

Результат будет

1.49
1.49
1.49
0 голосов
/ 04 июля 2018

я думаю, что, может быть, вы хотите что-то более общее не только для этого ключа:

for key, value in d.items():
   d[key]=value.replace(" ","")

таким образом, независимо от ключа числа пробела, результат будет без пробелов

0 голосов
/ 04 июля 2018

Для вашего dict obj: -

>>> d = {'RAID FLY RIBBON 4PK': '$1 .49'}
>>> d['RAID FLY RIBBON 4PK'] = d['RAID FLY RIBBON 4PK'].replace(' ','')
>>> d
{'RAID FLY RIBBON 4PK': '$1.49'}

Даже если есть различное пространство; заменить будет работать нормально. Смотрите это: -

>>> d = {'RAID FLY RIBBON 4PK': '$1       .49'}
>>> d['RAID FLY RIBBON 4PK'] = d['RAID FLY RIBBON 4PK'].replace(' ','')
>>> d
{'RAID FLY RIBBON 4PK': '$1.49'}
0 голосов
/ 04 июля 2018

Вы можете просто удалить все пробелы из строки, предполагая, что они следуют одному и тому же формату. Что-то вроде этого:

for item in items: 
  for key in item.keys():
    item[key] = item[key].replace(" ", "")

Ключевая часть заменяет пробелы без пробелов.

Если вы просто хотите использовать пробел перед ".", Тогда вы можете использовать: Вместо этого .replace (".", ".").

Это заменит только 1 пробел. Чтобы заменить несколько, вы можете использовать цикл while, например так:

while ' .' in item[key]:
  item[key].replace(' .', '.')
0 голосов
/ 04 июля 2018

Sure:

string.replace(' .', '')
...