python-3.x - 如何完成这个Python脚本来操作制表符分隔文件中的数据?

标签 python-3.x list delimiter

我在制表符分隔的文件中有一个零件号序列号列表,我需要使用连字符将其合并在一起以生成 Assets 号

这是输入:

Part Number    Serial Number
PART1          SERIAL1
,PART2         SERIAL2
, PART3        SERIAL3

这就是我想要的所需输出:

Part Number    Serial Number    Asset Number
PART1          SERIAL1          PART1-SERIAL1
,PART2         SERIAL2          PART2-SERIAL2
, PART3        SERIAL3          PART3-SERIAL3

我尝试了以下代码:

import csv
input_list = []
with open('Assets.txt', mode='r') as input:
    for row in input:
        field = row.strip().split('\t') #Remove new lines and split at tabs
        for x, i in enumerate(field):
            if i[0] == (','):   #If the start of a field starts with a comma
                field[x][0] = ('') #Replace that first character with nothing
                field[x].lstrip() #Strip any whitespace
        print(field)

此代码产生实际输出:

['Part Number', 'Serial Number']
['PART1', 'SERIAL1']
['",PART2"', 'SERIAL2']
['", PART3"', 'SERIAL3']

我的第一个问题是我从所有字段开头删除逗号和空格的代码无法工作。

第二个问题是空格中添加了引号。

第三个问题是我不知道如何将另一个项目添加到列表数组( Assets 编号)中,以便我可以加入字段。

有人可以帮助我解决这些问题吗?

最佳答案

即使逗号不存在,您也可以尝试去掉它们,因此不再需要 if[0] == ",": 。您还删除了一个字符串,但该值不存储在列表中。此问题已修复:

input_list = []
with open('Assets.txt', mode='r') as text_file:
    for row in text_file:
        field = row.strip('\n').split('\t') # Remove new lines and split at tabs.
        for n, word in enumerate(field):
            field[n] = word.lstrip(", ") # Strip any number of whitespaces and commas.
        print(field)

输出:

['Part Number', 'Serial Number']
['PART1', 'SERIAL1']
['PART2', 'SERIAL2']
['PART3', 'SERIAL3']

现在我们可以将 Asset_number = field[0] + '-' + field[1] 放在某处,它会给您值 PARTx-SERIALx你想用。

稍作修改即可获得所需的输出:

input_list = []
with open('Assets.txt', mode='r') as text_file:
    for m, row in enumerate(text_file):
        field = row.strip('\n').split('\t') # Remove new lines and split at tabs.
        for n, word in enumerate(field):
            field[n] = word.lstrip(", ") # Strip any number of whitespaces and commas.

        if m == 0: # Special case for the header.
            text_to_print = field[0] + '\t' + field[1]  + '\t' + 'Asset Number'
        else:
            Asset_number = field[0] + '-' + field[1]
            text_to_print = field[0] + '\t' + field[1]  + '\t' + Asset_number

        print(text_to_print)

打印输出为:

Part Number     Serial Number   Asset Number
PART1   SERIAL1 PART1-SERIAL1
PART2   SERIAL2 PART2-SERIAL2
PART3   SERIAL3 PART3-SERIAL3

由于某种原因,它在这里看起来不太好,但字符串仍然正确,并且选项卡位于预期的位置,因此将其写入新文件而不是打印它应该没有问题。

'Part Number\tSerial Number\tAsset Number'
'PART1\tSERIAL1\tPART1-SERIAL1'
'PART2\tSERIAL2\tPART2-SERIAL2'
'PART3\tSERIAL3\tPART3-SERIAL3'

关于python-3.x - 如何完成这个Python脚本来操作制表符分隔文件中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53447099/

相关文章:

c# - 删除列表中除第一项以外的所有项

string - Excel VBA函数处理分隔符

python-3.x - 如何将输入列表转换为整数列表?

python - 从字典 python 的键动态生成正则表达式

Python sqlite3 - 按星期几列对表进行排序

string - linq string.contains on 子对象列表的字段

java - Spark : Splitting using delimiter doesn't work with commas

Python给定一个N个整数的数组A,以O(n)的时间复杂度返回A中没有出现的最小正整数(大于0)

python - 单击和 pylint

python - 在Python中访问列表列表的每个列表的内容