Python将读取到的字符串⽂本数据转换成数字类型列表和数组
数组转换成字符串最近在⽤Python,做⼀个⼩脚本,有个操作就是要读取⽂本框中的内容然后将其转换成数组对象再进⾏相关操作。但读取到的⽂本是字符串类型的,所以,得进⾏⼀波⼩操作了嘿。
下⾯是获取⽤tkinter包创建的⽂本框中所有内容的函数:
text = ('0.0','end')# 获取⽂本框所有内容
print(text)
这是读取指定路径下⽂本⽂件内容的⽅式:
f =open("D:/")
ad())
两者输出都是整个内容的⼀个字符串数据:
1 2 3
4 5 6
7 8 9
<class ‘str’>
开始操作:
⾸先,根据换⾏符对字符内容进⾏分隔,得到⼀个列表对象:
p = text.split('\n')
print(p)
'''输出:
['1 2 3', '4 5 6', '7 8 9']'''
但是列表⾥存储的也还是字符串元素,继续操作 既然有多个元素,那就⽤循环各个进⾏操作:
matrix =[]# 定义⼀个列表对象
for i in range(len(p)):
p1 = p[i].split(' ')# 将列表中每⼀块的的数字按空格进⼀步切分成列表
intp1 =[int(x)for x in p1]# 使⽤列表推导试将字符串转换为数字
# intp1 = list(map(int, p1)) # ⽅法2 使⽤map做映射转换为数字
matrix.append(intp1)# 将转换后的数字列表追加存⼊列表
print(matrix)
'''输出:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]'''
成功转换成⼀个数字类型的列表。
既然列表有了,那数组就简单了,直接⽤numpy包的arrray⽅法⽣成数组对象。
a = np.array(matrix)
print(a)
'''输出:
[[1 2 3]
[4 5 6]
[7 8 9]]'''
好了 以上就是我的转换思路,即,字符串→字符串列表→数字列表→数组(矩阵)
但是,我的最终⽬的是得到数组(矩阵)对象,中间的过程是不是可以省略了?好料,后⾯我真发现了⼀个函数,可以将字符串直接转换成数组(矩阵)。如下:
f =open("D:/")
text = f.read()
p = place('\n',';')
a = np.mat(p)
print(a)
'''输出:
[[1 2 3]
[4 5 6]
[7 8 9]]'''
对就是⽤numpy包中的mat()⽅法,按分号和空格将字符串转换成数组,这样就可以省去好的⾏代码了。
虽然⽅法好⽤ 但是⾃⼰思考进⾏转换设计不更有趣嘿
勤学勤练勤思考,天天向上少不了!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论