Мне нужно переформатировать текст в документе - PullRequest
0 голосов
/ 18 февраля 2019

В настоящее время текст отформатирован следующим образом:

"Имя номера [идентификатор]"

Между ними указаны пробелы, а вокруг идентификатора есть квадратные скобки, кавычки простонапример.

Я пытаюсь переформатировать его, чтобы оно выглядело как

"Имя, идентификатор, переменная, число"

В этом примере запятые должны быть на месте (без кавычек)отметки), а переменная - это то, что мне просто нужно установить в 1 или 2 во всем документе.

Имя и номер будут напрямую извлечены (скажем, из текстового файла A), переформатированы и сохранены в файле B. На самом деле идентификатор имеет некоторое дополнительное форматирование, которое необходимо выполнить.

Идентификатор представлен в трехбуквенном формате (IE 'AKA').Что связано с чем-то конкретным, что я могу определить в некотором коде (IE 'AKA' = 'Также известно').

Итак, я считаю, что я пытаюсь

1. переформатировать имя иколичество непосредственно из документа a и сохранено в новом документе (b) 2. вручную определите переменную перед выполнением скрипта / кода в «a», а затем сохраните в новом документе «b».3. Распознать 3-значный код идентификатора в каждой строке документа A, заменить его на что-то новое в документе b.Поэтому мне понадобится какая-то база данных, чтобы скрипт извлек из нее (т. Е. Прочитайте AKA в строке в документе 'a' и найдите его в базе данных или что-то в этом духе, затем обменяйте AKA на Alwaysknown и перед тем, как ввести это в документ b).сохранение).

ЕСЛИ это все имеет смысл, я бы хотел, чтобы кто-нибудь высказал свое мнение о том, каков будет ваш подход к этому.Идентификаторы всегда будут состоять из 3 буквенно-цифровых символов, и они всегда будут соответствовать буквенно-цифровой строке.так что AKA всегда = также известно, FYI всегда = дополнительная информация и т.д ... и т.д ..

Спасибо за любой вклад!

1 Ответ

0 голосов
/ 18 февраля 2019

Можете ли вы достичь того, что вы хотите, с помощью функции, которая принимает исходную строку и переменную, а затем выводит "переформатированную" строку?

Вы можете использовать функцию string.split() в python, чтобы повернутьстрока в список фрагментов строки.По умолчанию он ищет пробелы и разбивает строку на них.Например:

'a b c'.split()

становится

['a', 'b', 'c']

Я подозреваю, что функция split () будет ключом к решению, которое вы ищете.

Вот некоторый кодэто может достичь того, что вы хотите.Может быть, вы могли бы использовать объект словаря, чтобы превратить идентификаторы в их длинные описания?Насколько это практично, зависит от того, сколько у вас идентификаторов, как часто они могут меняться и т. Д.

#dictionary of identifiers and their long descriptions
idLkUp = {'AKA': 'Alsoknownas',
          'FYI': 'Foryourinformation',
          }

inputStr = '5 Robert [FYI]'
variable = '1'

def reformatInputStr(inputStr, variable):
    # Expected input pattern: 'Number Name [Identifier]'
    #Returned output pattern: 'Name, Identifier, Variable, Number'
    splitStr = inputStr.split()
    splitStr[2] = splitStr[2].replace(']','').replace('[','')     #removes brackets from the Identifier
    strElements = {'Name': splitStr[1],
                   'Identifier': idLkUp[splitStr[2]],             #uses the idLkUp dictionary to get the long description of identifier
                   'Variable': variable,
                   'Number': splitStr[0],
                   }

    return '{Name}, {Identifier}, {Variable}, {Number}'.format(**strElements)

outputStr = reformatInputStr(inputStr, variable)
print(outputStr)

вывод:

Robert, Foryourinformation, 1, 5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...