我在制表符分隔的txt文件中有这样的输入(简化为4列;实际数据非常庞大):
FACTOR→NAME→SURNAME→ADDRESS
1→John→Smith→Chicago
3→Betty→Crawford→New York
2→Tom→Jonson→Chicago
我希望得到这个:
FACTOR→NAME→SURNAME→ADDRESS
1→John→Smith→Chicago
3→Betty→Crawford→New York
3→Betty→Crawford→New York
3→Betty→Crawford→New York
2→Tom→Jonson→Chicago
2→Tom→Jonson→Chicago
换句话说:我想根据FACTOR
列中的值重复每一行。此值只能为number > 0
。我怎么能用Python做到这一点?
答案 0 :(得分:0)
您可以为此创建output.txt
文件,并将上述行视为input.txt
的一部分,您可以执行以下操作:
inp = open('input.txt', 'r')
lines = inp.readlines()
inp.close()
out = open('output.txt', 'w')
for line in lines:
factor = int(line.split('\t')[0]) #splits on tab and gets the leftmost value, converts it to int
out.write(line+'\n'*factor) #this writes the line desired number of times
out.close()
答案 1 :(得分:0)
使用Sam Chats提供的脚本我收到了这个错误:ValueError:int(无效)的基数为10的文字:'FACTOR' 我想这是因为列名FACTOR也在循环中用作乘法因子。我对脚本做了一些修改,得到了我需要的东西:
inp = open('input.txt', 'r')
out = open('output.txt', 'w')
header = inp.readline()
lines = inp.readlines()[0:]
out.write(header)
for line in lines:
factor = int(line.split('\t')[0])
out.write(line*factor)
inp.close()
out.close()
感谢您的提示!