pycharm中 读取文本文件 换行strip('\n')问题

今天写Python读取一个txt文件,被字符串的操作折磨了一早上,一直报错

could not convert string to float: '37 76 117 169 204'

我的输入文件原本格式是这样的 (字符间以tab键分隔)

37	76	117	169	204

本来按照如下编码应该读取到的 x 是一个个单个字符‘37’ ‘76’ ‘117’ ‘169’ ‘204’的

f = open('input2/GPS+SR+RR\\root_%s.txt' % str(root))
data = [[int(x) for x in line.strip('\n').split('\t')]for line in f]

但是不知为何一直读取出来的是一个文本文件的一行是一个字符串,怎么调都不对,最后把代码重写了一遍,几个for循环想一步步看一下读取出来的结果:

with open('input2/GPS+SR+RR\\root_%s.txt' % str(root)) as f:
    # print(f.readlines())
    for line in f.readlines():
        line_str = line.strip('\n')
        # print(line_str)
        line_str_list = line_str.split('\t')
        print(line_str_list)

输出结果是这样的:

['37 76 117 169 204']

搞了好久,最后才发现原来是制表符   \t   的问题,把他换成  空格 split(' ')

输出结果 就对啦['37', '76', '117', '169', '204'] 

但是 这个操作前我有把输入文件的格式改为  按空格分开!如下:

37 76 117 169 204

所以问题出现了:当字符间以 tab键分隔的时候,为何读取的时候用 ‘\t’ 分割会报错 ,而且读取的不是想要的文件格式呢?

要想解决这个问题,我们需要先了解一下 什么是 utf-8/ gbk/ unicode编码,以及他们的区别:

参考原文:https://blog.csdn.net/chixujohnny/article/details/51782826 

但其实 最后我还不是很懂为何改为空格之后 就可以识别了,但最后总结出了一个结论,如果想要切分pycharm 中文本文件的字符串,可以直接把分隔的 符号直接copy 过来粘贴到split 之后即可,而且一般情况下最好不要使用tab分隔字符串,用空格就好啦!

最后,Pycharm中的文本文件 有效地数据行 写完之后光标 要放置在最后一个字符紧后方,也就是不能多出一个空行,这可跟 写code不同,(语法格式可不是光标要放在数据滞后一行,哈哈),否则的话strip('\n') split(' ') 之后你就会发现多出一个 空的列表

['']

很尴尬了,对于我这种编程入门小白来说,繁琐但很保险的方法就是检查一下你要读取的文件啦,但一个优秀的程序员应该是要在 程序中加一个 判断条件,如果为空字符串就remove哈,以后慢慢锻炼吧~~ 

各位大神谁可以详细解释一下 pycharm中制表符分割split('\t') 为何不可以识别 txt文件中的 tab键分隔符,欢迎留言哈~~! 

猜你喜欢

转载自blog.csdn.net/weixin_37600848/article/details/83478145