ran*_*s26 5 python text-processing text-files
我从无法更改的外部系统执行的SQL查询中获得了一个(非常难看的)txt输出。这是输出示例:
FruitName Owner OwnerPhone
============= ================= ============
Red Apple Sr Lorem Ipsum 123123
Yellow Banana Ms Dolor sir Amet 456456
Run Code Online (Sandbox Code Playgroud)
如您所见,该FruitName列和该Owner列可能只包含很少的单词,并且这些列中可以包含多少个单词没有固定的模式。如果我line.split()在每行Python上使用make数组,它将删除所有空格,并使数组变成如下形式:
['Red', 'Apple', 'Sr', 'Lorem', 'Ipsum', '123123']
['Yellow', 'Banana', 'Ms', 'Dolor', 'sir', 'Amet', '456456']
Run Code Online (Sandbox Code Playgroud)
问题是,如何将其正确拆分成如下所示的输出:
['Red Apple', 'Sr Lorem Ipsum', '123123']
['Yellow Banana', 'Ms Dolor sir Amet', '456456']
Run Code Online (Sandbox Code Playgroud)
我是Python的新手,我不知道这种事情是否可行。任何帮助将不胜感激。谢谢!
列具有固定宽度,因此您可以使用它并切片线
data = '''FruitName Owner OwnerPhone
============= ================= ============
Red Apple Sr Lorem Ipsum 123123
Yellow Banana Ms Dolor sir Amet 456456'''
lines = data.split('\n')
for line in lines[2:]:
fruit = line[:13].strip()
owner = line[13:32].strip()
phone = line[32:].strip()
print([fruit, owner, phone])
Run Code Online (Sandbox Code Playgroud)
更复杂的解决方案将使用第二行 - with ===- 来计算列的宽度并在切片中使用它们。