首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用line.split()将文本文件拆分为不同的列

如何使用line.split()将文本文件拆分为不同的列
EN

Stack Overflow用户
提问于 2019-08-28 01:30:29
回答 2查看 260关注 0票数 0

我希望能够将我的文本文件拆分为不同的列。

我的文本文件中的数据如下所示:

代码语言:javascript
复制
023004         1997/11/14 15:00    2.971          
023004         1997/11/14 18:00    3.175          
023004         1997/11/14 21:00    3.300          
023004         1997/11/15 00:00                   AR
023004         1997/11/15 03:00                   AR

除了当我尝试拆分列时,我得到的结果是:

代码语言:javascript
复制
['023002', '2008/11/20', '23:15', '1.076']
['023002', '2008/11/20', '23:30', '1.083']
['023002', '2008/11/20', '23:45', '1.089']
['023002', '2008/11/21', '00:00', 'AR']
['023002', '2008/11/21', '00:15', 'AR']
['023002', '2008/11/21', '00:30', 'AR']

AR和我的数据在同一列中。我不知道如何指定如果有'AR',它就是一个新列。我不想用熊猫。我需要它能够将我的字符串转换为浮点数。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-28 01:40:16

好的,看起来你在尝试使用一个“”分隔符,但是这是不起作用的,因为在你的数据中,有时一列中没有信息,它猜测你想要AR在你的第4列而不是第5列。

我认为最好的方法是按原样生成行,并将它们放入列表中。然后,如果匹配,我们可以只抛出空格。

代码语言:javascript
复制
data = [['023002', '2008/11/20', '23:15', '1.076'],
['023002', '2008/11/20', '23:30', '1.083'],
['023002', '2008/11/20', '23:45', '1.089'],
['023002', '2008/11/21', '00:00', 'AR'],
['023002', '2008/11/21', '00:15', 'AR'],
['023002', '2008/11/21', '00:30', 'AR']]

for row in data:
  if row[3] == "AR":
    row.insert(3, "")

for row in data:
  print(row)

>> 
['023002', '2008/11/20', '23:15', '1.076']
['023002', '2008/11/20', '23:30', '1.083']
['023002', '2008/11/20', '23:45', '1.089']
['023002', '2008/11/21', '00:00', '', 'AR']
['023002', '2008/11/21', '00:15', '', 'AR']
['023002', '2008/11/21', '00:30', '', 'AR']
票数 0
EN

Stack Overflow用户

发布于 2019-08-28 01:54:31

您也可以使用正则表达式来完成此操作:

代码语言:javascript
复制
import re

data = []
# this regular expression captures each column as a separate
# group
cols = re.compile("(\d+)\s{,9}(\S+)\s(\S+)\s{,4}(\d+\.\d+)*\s+(AR)*")

with open(yourfile) as fh:
    for line in fh:
        col = cols.match(line.strip('\n'))
        # if there's no match, skip the line
        if not col:
            continue
        data.append([x if x is not None else '' for x in col.groups()])


[['023004', '1997/11/14', '15:00', '2.971', ''], 
['023004', '1997/11/14', '18:00', '3.175', ''], 
['023004', '1997/11/14', '21:00', '3.300', ''], 
['023004', '1997/11/15', '00:00', '', 'AR'], 
['023004', '1997/11/15', '03:00', '', 'AR']]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57679645

复制
相关文章

相似问题

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