我已导入文字然后将其打印
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
分隔的数组中的两个单独的列
数据文件是一个.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
答案 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
转置列表