Python 用字符串替换文本文件列中的值

Python 用字符串替换文本文件列中的值,python,list,if-statement,Python,List,If Statement,我有一个很简单的问题。我有一个数据集(小样本如下所示) 我需要讨论的第一个问题是用逗号替换每个空格,我用以下代码做到了这一点 import fileinput with open('Data_Sorted.txt', 'w') as f: for line in fileinput.input('DATA.dat'): line = line.split(None,8) f.write(','.join(line)) 结果如下 22,85,203,17

我有一个很简单的问题。我有一个数据集(小样本如下所示)

我需要讨论的第一个问题是用逗号替换每个空格,我用以下代码做到了这一点

import fileinput

with open('Data_Sorted.txt', 'w') as f:
    for line in fileinput.input('DATA.dat'):
        line = line.split(None,8)
        f.write(','.join(line))
结果如下

22,85,203,174,9,0,362,40,0
21,87,186,165,5,0,379,32,0
30,107,405,306,25,0,756,99,0
6,5,19,6,2,0,160,9,0
21,47,168,148,7,0,352,29,0
28,38,161,114,10,3,375,40,0
27,218,1522,1328,114,0,1026,310,0
21,78,156,135,5,0,300,27,0
for line in open("Data_Sorted.txt"):
    columns = line.split(',')

    print columns[8]
我的下一步是从最后一列中获取值,检查它们是否小于2,并将其替换为字符串“nfp”

我可以用以下内容来分隔最后一列

22,85,203,174,9,0,362,40,0
21,87,186,165,5,0,379,32,0
30,107,405,306,25,0,756,99,0
6,5,19,6,2,0,160,9,0
21,47,168,148,7,0,352,29,0
28,38,161,114,10,3,375,40,0
27,218,1522,1328,114,0,1026,310,0
21,78,156,135,5,0,300,27,0
for line in open("Data_Sorted.txt"):
    columns = line.split(',')

    print columns[8]

我的问题是实现用字符串替换值的条件,然后我不确定如何将修改后的列放回原始数据集中。

您需要将列[8]转换为int,如果小于2,则进行比较

for line in open("Data_Sorted.txt"):
    columns = line.split(',')
    if (int(columns[8]) < 2):
        columns[8] = "nfp"
    print columns
对于打开的行(“Data_Sorted.txt”):
columns=line.split(',')
如果(int(列[8])<2):
列[8]=“nfp”
列印

无需在文件中进行两次循环。此外,还可以使用
-1
索引行中的最后一个元素

import fileinput

with open('Data_Sorted.txt', 'w') as f:
    for line in fileinput.input('DATA.dat'):
        # strip newline character and split on whitespace
        line = line.strip().split()

        # check condition for last element (assuming you're using ints)
        if int(line[-1]) < 2:
            line[-1] = 'nfp'

        # write out the line, but you have to add the newline back in
        f.write(','.join(line) + "\n")
导入文件输入
将open('Data_Sorted.txt','w')作为f:
对于fileinput.input('DATA.dat')中的行:
#剥离换行符并在空白处拆分
line=line.strip().split()
#检查最后一个元素的条件(假设您使用的是ints)
如果int(第[-1]行)小于2:
行[-1]=“nfp”
#写出这行,但你必须把换行符加进去
f、 写入(“,”.join(行)+“\n”)
进一步阅读