我有一堆数据存储在txt文件的单个列中,如下所示:
name1
address1
number1
name2
address2
number2
name3
address3
number3
name4
address4
number4
等
我想在3列中对此进行排序,以便将其导入excel。
任何线索?
答案 0 :(得分:1)
您可以使用Microsoft word
!
将数据粘贴到MSWord(作为keep text only
),然后全部选择(Ctrl+A
)。转到insert
功能区。从Table
按钮,选择convert text to table
。
选择number of columns
3,然后选择separate text at
作为Paragraph
。
它会为您提供所需的确切输出。无需编码您遇到的所有内容。您可以阅读更多相关信息here。
答案 1 :(得分:0)
你可能想要这样的东西:
with open("input.txt", "r") as infile:
line = infile.read().split()
line = [" ".join(line[i:i+3]) for i in range(0,len(line),3)]
print(line)
with open("output.txt", "w") as outfile:
for i in line:
outfile.write(i + "\n")
output.txt
的内容:
name1 address1 number1
name2 address2 number2
name3 address3 number3
name4 address4 number4
答案 2 :(得分:0)
这应该这样做:
infile = open("data.txt","r")
outfile = open("Excel.csv","w")
while True:
name = infile.readline().strip()
address = infile.readline().strip()
number = infile.readline().strip()
data = ','.join([name,address,number])
if data == ",,":
break
data += '\n'
outfile.write(data)
如果我记得从我的Excel时代开始,它对CSV的效果非常好。
答案 3 :(得分:0)
实现这一目标的最简单方法是使用一段代码,这些代码被不必要地重写了数千次,因为由于某些原因它还没有被包含在标准库中(或者作为某种类型的内置,可能尽管在python中经常使用它,但是让生活变得更加轻松。 Vasilis G。答案中包含一个版本。
chunk_by_length(iterable, length):
return (iterable[i:i+length] for i in range(0, len(iterable), length))
一旦你掌握了这个简单但非常方便的功能,这个问题就变得微不足道了。
data = open('data.txt').read().splitlines()
formatted = '\n'.join(','.join(chunk) for chunk in chunk_by_length(data, 3))
open('data.csv', 'w').write(formatted)
虽然已经选择了已接受的答案,但我仍然发布此答案以帮助任何试图在python中解决此问题或类似问题的人。