当前文本的格式如下:
“数字名称[标识符]”
每个之间都有空格,并且标识符周围有括号,引号仅是示例。
我正在尝试将其重新格式化为
“名称,标识符,变量,数字”
在此示例中,确实需要使用逗号(不带引号),并且在整个文档中我只需要将该变量设置为“ 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等...等等。
感谢您的输入!
答案 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