我有一个2栏表格,其中第一栏是项目,第二栏是颜色类别,项目和颜色以Tab分隔:
car blue
bicycle;scooter green
boat yellow
firetruck;airplane;skateboard red
motorcycle black
我想将表格/列表转换为:
car blue
bicycle green
scooter green
boat yellow
firetruck red
airplane red
skateboard red
motorcycle black
我想我需要定义一个函数来处理第1列中分隔字符串的拆分,并在第2列中为每行/行写入适当的类别。
我认为逻辑基本上是这样的:
with open('colors_in.txt', 'rt') as src:
with open('colors_out.txt', 'wt') as dest:
#store column 2 category in a variable and break apart the string at the delimiter in new lines + category
def splitter()
colorval = (row[1] for row in src)
for line in src:
for word in line.split(';'):
dest.write(word.rstrip() + colorval + '\n')
if ";" in line:
splitter()
else:
for line in src:
dest.write(line)
我四处寻找解决这个问题的方法,发现了一些非常复杂的元素,包括numpy和imap(),我不确定如何将它们合并。我知道上面的代码非常不正确--只是尽可能地表达了我希望代码做/完成的事情。
1条答案
按热度按时间pbossiut1#
伪代码有很多问题(不是语法问题,而是逻辑问题)。
我将使用
csv
模块来实现这一点。简单地读取每一行,根据';'
拆分第一列,如果没有';'
,您将得到一个元素的列表,如果有';'
,您将得到拆分后的列表,然后使用row[1]
(行的第二个元素)的值将其写回另一个csv。示例-