首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从只有一列(姓名、电话、地址)的CSV文件中提取数据

如何从只有一列(姓名、电话、地址)的CSV文件中提取数据
EN

Stack Overflow用户
提问于 2019-01-14 21:26:42
回答 4查看 101关注 0票数 1

我有一个CSV文件。它只有一列。第1行=名称。线路2=电话。第3-5行=地址。

我尝试过用excel进行组织,但是我迷路了。我是一个初学者,希望学习!

代码语言:javascript
复制
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

以此类推。

EN

回答 4

Stack Overflow用户

发布于 2019-01-14 21:32:59

此代码将文件转换为以空格分隔的扁平行

代码语言:javascript
复制
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))
票数 1
EN

Stack Overflow用户

发布于 2019-01-14 21:31:43

如果它只有一列,那么它实际上不是CSV (即逗号分隔值)文件。您需要提取每一行数据,并根据它在文件中的位置来解释它是哪种类型的数据。这将要求每个集合有5行数据,否则您将不得不根据找到的数据进行解释。

票数 0
EN

Stack Overflow用户

发布于 2019-01-14 21:32:31

OFFSET函数在这里很有用。假设您的原始数据位于列A中,从A1开始,我们可以对新的name列使用以下公式:

代码语言:javascript
复制
=OFFSET($A$1,(ROW()-1)*6,0)

然后,只需将此单元格(无论它位于何处)复制到列中,以包含原始数据中的所有名称。

这个公式的逻辑是它首先获取A1,这是第一个名字。然后,第一个粘贴将访问A1 offset 6行,它位于第二个名称上,依此类推。

您可以对数据中的其他4个字段使用类似的公式。

编辑:

基于Ron下面的评论,您可能希望使用:

代码语言:javascript
复制
=(ROW()-1)*6+COLUMNS($A:A)

当工作表中的公式/数据发生更改时,不需要重新计算此公式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54182450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档