如何摆脱\ t和\ n然后将列表转换为数组

时间:2018-02-13 22:16:46

标签: python

我已导入文字然后将其打印

with open('data1.txt') as f:
    x = f.readlines()[1:17]
    print(x)

x =  ['0.0000\t1.06E+05\n', '0.0831\t93240\n', '0.1465\t1.67E+05\n', '0.2587\t1.54E+05\n', '0.4828\t1.19E+05\n', '0.7448\t1.17E+05\n', '0.9817\t1.10E+05\n', '1.2563\t1.11E+05\n', '1.4926\t74388\n', '1.7299\t83291\n', '1.9915\t66435\n', '3.0011\t35407\n', '4.0109\t21125\n', '5.0090\t20450\n', '5.9943\t15798\n', '7.0028\t4785.2\n']

然后,我想将此格式(不包含\t\n)格式化为由\t分隔的数组中的两个单独的列

编辑:SORRY SORRY SORRY提出了很少的努力,因为我认为我的回复是零,让我再试一次。

数据文件是一个.txt,顶部有一个标题,后跟两列空格分隔的数据。 我需要提取的数据是16 * 2的值矩阵 我希望x看起来像

x =  [[.0000  1.06E+05
       0.0831  93240
       0.1465  1.67E+05
       0.2587  1.54E+05
       0.4828  1.19E+05
       0.7448  1.17E+05
       0.9817  1.10E+05
       1.2563  1.11E+05
       1.4926  74388
       1.7299  83291
       1.9915  66435
       3.0011  35407
       4.0109  21125
       5.0090  20450
       5.9943  15798
       7.0028  4785.2]]

我做了[1:17]跳过第一行

with open('data1.txt') as f:
    x = f.readlines()[1:17]
    print(x)

我尝试使用分隔符功能(错误)并且我尝试使用csv文件加载它(错误地)

length = 0
col1 = []
col2 = []
with open("data1.txt", 'r') as file:
    csv_reader = csv.reader(file, delimiter=' ')
file.readline()
for line in csv_reader:
    col1=np.append(col1,float(line[0])*2
    col2=np.append(col2,np.sqrt(float(line[1])))
    length = length + 1

2 个答案:

答案 0 :(得分:1)

听起来你想要做的是在制表符分隔文件中读取。可能值得使用csv选项查看delimiter='\t'库。

如果输入数据(text.txt)看起来像

1   2
3   4
5   6
7   8

您可以阅读:

import csv
with open('text.txt', 'r') as f:
     fread = csv.reader(f, delimiter='\t')
     output = []
     for row in fread:
         output.append(row)

输出:

[['1', '2'], ['3', '4'], ['5', '6'], ['7', '8']]

答案 1 :(得分:0)

>>> l_rows = [x_i.strip().split('\t') for x_i in x]
[['0.0000', '1.06E+05'], ['0.0831', '93240'], ['0.1465', '1.67E+05']...]

.strip将取出\n,然后通过分隔符\t将字符串拆分为列表

>>> l_cols = list(map(list, zip(*l_rows)))
[['0.0000', '0.0831', '0.1465' ...], ['1.06E+05', '93240', '1.67E+05'...]]

由于您指定了列,因此使用纯python

转置列表