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

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

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


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

python - 将行数据从文本文件复制到另一个列描述中-LMLPHP

最佳答案

首先,在打开文件时要小心,然后必须调用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”。
您可以很容易地仅获得它的名称和编号,但是我会让您发现自己的:)

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

09-18 18:41