如何合并我在Python中导入的文件中的行?

时间:2019-04-24 13:36:06

标签: python arrays merge

我有一个包含以下数据的文件(nameOfTheFile.txt):

-200.0000   23.0786    0.2402    0.9807    2.7610    0.7627    0.3168    1.4249
    0.8745    0.4953    1.4652    5.9483    0.0000    0.6919    2.2648    0.3407
    0.0000    0.6958    0.5775    0.0000    0.6171    2.6211
 -199.9800   23.0706    0.2401    0.9804    2.7598    0.7632    0.3167    1.4246
    0.8743    0.4952    1.4646    5.9452    0.0000    0.6917    2.2638    0.3407
    0.0000    0.6955    0.5774    0.0000    0.6170    2.6203

我将数据导入一个数组中,以备日后使用。但是,当我执行以下操作

with open(os.path.join(sys.path[0], 'nameOfTheFile.txt'), 'r') as file:
    lines = file.readlines()
    tab = []
    for i in range(len(lines)):
            tab.append(lines[i])
    print(tab)

我明白了

['-200.0000   23.0786    0.2402    0.9807    2.7610    0.7627    0.3168    1.4249\n', '    0.8745    0.4953    1.4652    5.9483    0.0000    0.6919    2.2648    0.3407\n', '    0.0000    0.6958    0.5775    0.0000    0.6171    2.6211\n', ' -199.9800   23.0706    0.2401    0.9804    2.7598    0.7632    0.3167    1.4246\n', '    0.8743    0.4952    1.4646    5.9452    0.0000    0.6917    2.2638    0.3407\n', '    0.0000    0.6955    0.5774    0.0000    0.6170    2.6203\n']

我知道如何摆脱\ n,但是当我这样做时,我仍然得到以下输出:

['-200.0000   23.0786    0.2402    0.9807    2.7610    0.7627    0.3168    1.4249', '    0.8745    0.4953    1.4652    5.9483    0.0000    0.6919    2.2648    0.3407', '    0.0000    0.6958    0.5775    0.0000    0.6171    2.6211', ' -199.9800   23.0706    0.2401    0.9804    2.7598    0.7632    0.3167    1.4246', '    0.8743    0.4952    1.4646    5.9452    0.0000    0.6917    2.2638    0.3407', '    0.0000    0.6955    0.5774    0.0000    0.6170    2.6203']

两行之间还用逗号隔开,使得nameOfTheFile.txt的每一行都成为数组的一项。因此,当我要打印时:

print(tab[0],tab[1])

我得到

-200.0000   23.0786    0.2402    0.9807    2.7610    0.7627    0.3168    1.4249     0.8745    0.4953    1.4652    5.9483    0.0000    0.6919    2.2648    0.3407

我想要的是,不是nameOfTheFile.txt的每一行都被视为一项,而是每一值,这将通过在前面加上打印内容来给我:

-200.0000   23.0786

请问有办法吗?

谢谢!

3 个答案:

答案 0 :(得分:0)

您的文件由文本行组成,但您需要数字。您必须自己进行转换。

tab = []
with open(os.path.join(sys.path[0], 'nameOfTheFile.txt'), 'r') as file:
    for line in file:
            tab += [float(n) for n in line.strip().split()]
print(tab)

答案 1 :(得分:0)

您似乎需要list.extend

例如:

tab = []
with open(os.path.join(sys.path[0], 'nameOfTheFile.txt')) as infile:
    for line in infile:
        tab.extend(line.strip().split())  #Strip newline char and split by space. 
print(tab[0],tab[1])

输出:

-200.0000 23.0786

答案 2 :(得分:0)

只需读取整个文件并拆分其内容即可:

with open('nameOfTheFile.txt', 'r') as file:
    text = file.read()
    tab = text.split()

print(tab)
print(tab[0], tab[1])

或使用

tab = [float(i) for i in text.split()]

如果您需要数字而不是字符串。