我遇到了一个复杂的问题,我将尽力描述。
我有一个包含以下信息的文本文件
客户名称:Zack客户编号:12345
10.4 2014556-FSV Poly -1.50 Feb 16 6每个单元的订单
10.5 2014556-FSV Poly -1.50 Feb 16 6每个单元的订单
客户名称:拉里客户编号:00099
1.4 2014556-FSV Poly -1.50 Feb 16 6每个单元的订单
1.5 2014556-FSV Poly -1.50 Feb 16 6每个单元的订单
客户名称:James客户编号:99999
5.4 2014556-FSV Poly -1.50 Feb 16 6每个单元的订单
5.5 2014556-FSV Poly -1.50 Feb 16 6每个单元的订单
依此类推.....
我想做的是将“客户名称”值,“ Zack”和“客户编号”“ 12345”添加到该行的末尾,并摆脱当前格式。
最终以这种新格式结束。
10.4 2014556-FSV Poly -1.50 Feb 16 6每个单元订单Zach 12345
10.5 2014556-FSV Poly -1.50 Feb 16 6每个单元的订单数量为12345
1.4 2014556-FSV Poly -1.50 Feb 16 6每个单元订单Larry 00099
1.5 2014556-FSV Poly -1.50 Feb 16 6每个单元订单Larry 00099
5.4 2014556-FSV Poly -1.50 Feb 16 6每个单元订单James 99999
5.5 2014556-FSV Poly -1.50 Feb 16 6每个单元订单James 99999
我的想法是...如果行以数字开头,然后将最后一个客户名称值和客户编号值添加到行末?
这有可能吗?
非常感谢您的参与!
这是我的代码:
import re
file = open('Orders.txt', 'r')
for line in file:
if line.__contains__('Customer Name') or line[0].isdigit():
print(line.lstrip())
这是一个更好的数据示例:
最佳答案
首先,在打开文件时要小心,然后必须调用file.close()!
您可以做的是遍历文件,并在每次找到一个时更改客户名称和编号
这是我的看法:
customer_number = 0
customer_name = ''
with open('Orders.txt', 'r') as file: # Usually it's how files are opened
while True:
line = file.readline()
if line == '': # We get out of the loop when we're finished
break
if 'Customer Name' in line:
# Change customer number and name
# Quite hacky way to do it
listline = line.split('Customer')
customer_name = listline[0]
customer_number = listline[1]
else :
print('%s, %s, %s' % (line.strip(), customer_name, customer_number))
请注意,在此行的末尾将使用此方法写为“名称:yourcustomername”和“ Number:yourcustomernumber”。
您可以很容易地仅获得它的名称和编号,但是我会让您发现自己的:)
我还建议您将所做的更改保存在文件中,而不是简单地打印它们。