对于分隔文本文件,Python查找并替换为NA

2024-04-27 03:14:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python很陌生。假设我在一个(非常大)分隔文本文件中有数据,如下所示:

a|b|c|d|e

1|.|.|-|.

1.2|2.6|||1.7

因为文本文件非常大,所以我想逐行读写它。我想用一个字符串.-或空的单元格NA。我试了一下:

^{pr2}$

但我想肯定有更好的方法,用分隔符?此外,此解决方案不会在行的结尾和开头提取实例。有没有更好的程序员的主意?在

预期产量:

a|b|c|d|e

1|NA|NA|NA|NA

1.2|2.6|NA|NA|1.7

我还尝试使用csv模块和regex:

import csv
import re

f=open('sample1_fixed.txt','wb')

with open('sample1.txt','rb') as inputfile:
    read=csv.reader(inputfile, delimiter='|')
    for row in read:
        text = row[1]
        text = re.sub(r'^\.$','NA',text)
        text = re.sub(r'^-$','NA',text)
        f.write(text + '\n')
f.close()

但这只允许我一次只写一列,我不知道如何将它们全部放入输出中。。。在


Tags: csv数据字符串textimportretxtread
1条回答
网友
1楼 · 发布于 2024-04-27 03:14:46

csv.reader与自定义分隔符=“|”和一个用于replace_NAs的助手函数一起使用:

import csv

delim = '|'

def replace_NAs(row, NA_values=["", ".", "-"]):
    if x in NA_values:
        return "NA"
    else:
        return x

with open('infile') as csvfile:
    reader = csv.reader(csvfile, delimiter=delim)
    for row in reader:
        transformed_row = [replace_NAs(x) for x in row]
        print delim.join(transformed_row)

a|b|c|d|e
1|NA|NA|NA|NA
1.2|2.6|NA|NA|1.7

相关问题 更多 >