将行数据复制到文本文件中的另一个列描述中

时间:2017-02-24 15:50:33

标签: python python-3.x

我遇到了一个我将尽力描述的复杂问题。

我有一个包含以下信息的文本文件

客户名称: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())

这是一个更好的数据示例:

enter image description here

1 个答案:

答案 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”。 你可以很容易地得到这个的名字和数量,但我会让你自己找到:)。

我还建议您将更改保存在文件中,而不是简单地打印它们。