我需要重新格式化文档中的文本

时间:2019-02-18 20:19:04

标签: python ruby

当前文本的格式如下:

“数字名称[标识符]”

每个之间都有空格,并且标识符周围有括号,引号仅是示例。

我正在尝试将其重新格式化为

“名称,标识符,变量,数字”

在此示例中,确实需要使用逗号(不带引号),并且在整个文档中我只需要将该变量设置为“ 1或2”即可。

名称和号码将直接从(例如)文本文件A中​​提取出来,并重新格式化并保存到文件B中。标识符实际上还需要一些其他格式。

标识符采用3个字母的格式(即“ AKA”)。这与我可以在某些代码中定义的特定内容(例如,IE'AKA'='Alsoknownas')相关。

所以总的来说,我相信我正在尝试

1。直接从凭证a重新格式化名称和数量并保存在新凭证中(b) 2.在脚本/代码在“ a”上执行之前手动定义一个变量,然后保存到新文档“ b”上。 3.识别文档A每一行中的3位标识符代码,将其更改为文档b中的新内容。因此,我需要某种数据库来提取脚本(例如,在文档“ a”中的行上读取AKA并在数据库中查找它,或将AKA换成Alsosnowas,然后将其输入到文档b中)保存)。

如果这一切都说得通的话,那么我希望任何人都可以就您的方法提出建议。标识符将始终为3个字母数字字符,并且将始终与字母数字字符串相关。因此,AKA始终=也称为,FYI始终= Foryouinformation等...等等。

感谢您的输入!

1 个答案:

答案 0 :(得分:1)

您是否可以通过使用一个函数来实现所需的功能,该函数需要接收原始字符串和变量,然后输出“重新格式化”的字符串?

您可以在python中使用string.split()函数将字符串转换为字符串列表。默认情况下,它将查找空格字符并从中分解出字符串。例如:

'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