我遇到了一个我将尽力描述的复杂问题。
我有一个包含以下信息的文本文件
客户名称:Zack客户编号:12345
10.4 2014556 - FSV Poly -1.50 Feb 16 6每单位订单
10.5 2014556 - FSV Poly -1.50 Feb 16 6每单位订单
客户名称:Larry客户编号: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每单位订单Zack 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())
这是一个更好的数据示例:
答案 0 :(得分:1)
首先,小心打开文件,然后调用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))
请注意,在该行的末尾将使用此方法写入“Name:yourcustomername”和“Number:yourcustomernumber”。 你可以很容易地得到这个的名字和数量,但我会让你自己找到:)。
我还建议您将更改保存在文件中,而不是简单地打印它们。