Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将数据替换到不同的文件_Python_File - Fatal编程技术网

Python 将数据替换到不同的文件

Python 将数据替换到不同的文件,python,file,Python,File,首先,我们有两个文件: file01.txt 第二个文件只有一行 file02.txt 第一个参数在两个文件中相同(唯一)。 我必须用file02中的一些替换数据file01。匹配条件是第一个参数(代码) 我有一个输入(代码请求)和两个文件的阅读行,下一步我需要做什么,我也在处理列表 预期结果: input = 101 输出应为: 101|False|Section06 102|1083.33|12|24/12/2015 您可以使用读取文件,并将其放入dict中,然后按如下方式替换密钥: i

首先,我们有两个文件:

file01.txt

第二个文件只有一行

file02.txt

第一个参数在两个文件中相同(唯一)。 我必须用file02中的一些替换数据file01。匹配条件是第一个参数(代码)

我有一个输入(代码请求)和两个文件的阅读行,下一步我需要做什么,我也在处理列表

预期结果:

input = 101
输出应为:

101|False|Section06
102|1083.33|12|24/12/2015
您可以使用读取文件,并将其放入dict中,然后按如下方式替换密钥:

import csv
with open('file1') as f:
    d = {i[0]: i[1:] for i in csv.reader(f, delimiter='|')}

with open('file2') as f:
    d.update({i[0]: i[1:] for i in csv.reader(f, delimiter='|')})
>> data1
['101|10075.0|12|24/12/2015\n', '102|1083.33|12|24/12/2015']

>> data2
'101|False|Section06'
d
看起来像:

{'101': ['False', 'Section06'], '102': ['1083.33', '12', '24/12/2015']}
要获取例外输出,请执行以下操作:

>>> ['|'.join([i[0]]+i[1]) for i in d.items()]
['101|False|Section06', '102|1083.33|12|24/12/2015']
如果要将它们写入文件:

with open('file1', 'w') as f:
    for i in d.items():
        f.write('|'.join([i[0]]+i[1]))

您只需将两组数据连接成一个
pandas.DataFrame()
,如下所示:

import pandas as pd

df1 = pd.DataFrame([[10075.0, 12,'24/12/2015'], [1083.33, 12, '24/12/2015']], index=[101,102], columns=['prc', 'code', 'date'])
'''                    
101|10075.0|12|24/12/2015
102|1083.33|12|24/12/2015
'''
df2 = pd.DataFrame([[False, 'Section06'], [True, 'Section07']], index=[101,102], columns=['Bool', 'Section'])
'''
101|False|Section06
102|True|Section07
'''
pd.concat([df1,df2], axis=1, join='outer')
其中:

          prc  code        date   Bool    Section
101  10075.00    12  24/12/2015  False  Section06
102   1083.33    12  24/12/2015   True  Section07
现在您可以去掉不需要的列(例如使用
pandas.Drop()

解决方案 这适用于给定的示例:

with open('file01.txt') as fobj1, open('file02.txt') as fobj2:
    data1 = fobj1.readlines()
    data2 = fobj2.readline()

code = data2.split('|', 1)[0]

with open('file01.txt', 'w') as fobj_out:
    for line in data1:
        if line.split('|', 1)[0] == code:
            fobj_out.write(data2 + '\n')
        else:
            fobj_out.write(line)
一步一步地 我们打开两个文件进行读取:

with open('file01.txt') as fobj1, open('file02.txt') as fobj2:
    data1 = fobj1.readlines()
    data2 = fobj2.readline()
读取的数据如下所示:

import csv
with open('file1') as f:
    d = {i[0]: i[1:] for i in csv.reader(f, delimiter='|')}

with open('file2') as f:
    d.update({i[0]: i[1:] for i in csv.reader(f, delimiter='|')})
>> data1
['101|10075.0|12|24/12/2015\n', '102|1083.33|12|24/12/2015']

>> data2
'101|False|Section06'
我们只需要
file02.txt
中的代码:

>>> code = data2.split('|', 1)[0]
code
'101'
data2.split(“|”,1)
处拆分。因为我们只需要一次拆分,所以可以使用
1
来限制它

现在我们再次打开
file01.txt
。这次写作:

with open('file01.txt', 'w') as fobj_out:
    for line in data1:
        if line.split('|', 1)[0] == code:
            fobj_out.write(data2 + '\n')
        else:
            fobj_out.write(line)

如果line.split(“|”,1)[0]==code:执行与上述相同的拆分,但对
file01.txt
的所有行执行此拆分。如果代码等于
file02.txt
中的代码,我们使用
file02.txt
中的行,否则我们只需将行形式
file01.txt
写回。

你是什么意思?是否用第二个文件替换第一个文件?为什么不直接复制粘贴…哈哈有趣?不,我的程序必须这样做,因为我有两个文件的表格,可以看到两个文件的终端数据。完全不清楚你在问什么。在你的问题中向我们展示你的预期结果。我想知道如果你必须将修改过的表格写回文件1,时间复杂度是否太高。我在上面说过,我正在处理列表,你能告诉我这里的每一行都做了什么吗?这些文件只是示例,我的行相当大,我必须将它隔离在某个临时文件中,并逐部分更改,然后写回同一位置的旧文件。拆分(“|”,1)。对于什么是“1”?它在
|
处拆分,但只拆分一次:
['101',False | Section06']'
。问题是,对于某些行,我们需要列的某个子集,而对于其他行,我们需要另一个子集。自从我首先阅读并回答后,OP对其问题做了很大的更改。啊。。