我有一个CSV文件。它只有一列。第1行=名称。线路2=电话。第3-5行=地址。
我尝试过用excel进行组织,但是我迷路了。我是一个初学者,希望学习!
Chris
778-222-2445
17 Main Street
Clinton, OH
9 Miles
John
772-022-2022
411 Oxford Street
Miami, FL
15 Miles
Chris 778-222-2445 17 Main Street Clinton, OH 9 Miles
John 772-022-2022 411 Oxford Street Miami, FL 15 Miles以此类推。
发布于 2019-01-14 21:32:59
此代码将文件转换为以空格分隔的扁平行
with open('file.txt') as f:
record = []
for line in f: # iterate through file
line = line.strip() # remove useless endings
if line: # data on line?
record.append(line)
else: # empty line => next record
if record: # avoid printing if we had several empty lines
print (' '.join(record))
record = [] # create new record
# there could be no empty line at EOF
if record: # avoid printing if we had several empty lines
print (' '.join(record))发布于 2019-01-14 21:31:43
如果它只有一列,那么它实际上不是CSV (即逗号分隔值)文件。您需要提取每一行数据,并根据它在文件中的位置来解释它是哪种类型的数据。这将要求每个集合有5行数据,否则您将不得不根据找到的数据进行解释。
发布于 2019-01-14 21:32:31
OFFSET函数在这里很有用。假设您的原始数据位于列A中,从A1开始,我们可以对新的name列使用以下公式:
=OFFSET($A$1,(ROW()-1)*6,0)然后,只需将此单元格(无论它位于何处)复制到列中,以包含原始数据中的所有名称。
这个公式的逻辑是它首先获取A1,这是第一个名字。然后,第一个粘贴将访问A1 offset 6行,它位于第二个名称上,依此类推。
您可以对数据中的其他4个字段使用类似的公式。
编辑:
基于Ron下面的评论,您可能希望使用:
=(ROW()-1)*6+COLUMNS($A:A)当工作表中的公式/数据发生更改时,不需要重新计算此公式。
https://stackoverflow.com/questions/54182450
复制相似问题