无法识别字符串-Python中的字符
我正在编写函数的一部分来帮助清理文件中的数据。我正在有效地清理所有记录的温度,并将其转换为摄氏度,然后转换为浮标。我的代码似乎还可以。然而,当我去寻找一个字符,比如“C”,它会继续说每个字符串中都有这个字符。 一个很好的例子是,当我按原样运行时,每次都返回0.0,因为它将所有内容都识别为“NA”。我试图删除所有的代码,只是想找到“C”,同样的事情发生了。 我在任何其他模块中都没有遇到过这个问题,在那里我做了基本相同的事情。有人知道为什么会这样吗 这是我的.tsv文件中的前几行数据的样子:无法识别字符串-Python中的字符,python,python-3.x,string,for-loop,file-io,Python,Python 3.x,String,For Loop,File Io,我正在编写函数的一部分来帮助清理文件中的数据。我正在有效地清理所有记录的温度,并将其转换为摄氏度,然后转换为浮标。我的代码似乎还可以。然而,当我去寻找一个字符,比如“C”,它会继续说每个字符串中都有这个字符。 一个很好的例子是,当我按原样运行时,每次都返回0.0,因为它将所有内容都识别为“NA”。我试图删除所有的代码,只是想找到“C”,同样的事情发生了。 我在任何其他模块中都没有遇到过这个问题,在那里我做了基本相同的事情。有人知道为什么会这样吗 这是我的.tsv文件中的前几行数据的样子: 了解
了解几行数据的外观可能会有所帮助!完成!我包括了前10行,您是否必须为此编写自己的函数,比如作业,或者您是否可以使用pandas和pandas.read_csv之类的工具,并使用制表符分隔?问题实际上可能源于您如何加载数据。当对y.readlines()中的l执行
时:make_list=l.split()
,是否尝试显示每行的make_list[7]
外观?从你上传的图像来看,这些度数似乎存储在你的.tsv的第6列。@TheHalf-BloodPrince Bingo!你是个救生员。现在一切都好了。非常感谢你的帮助!
for l in y.readlines():
make_list = l.split()
if make_list[7] == 'NA' or make_list[7] == 'N/A' or\
make_list[7] == 'N-A-' or make_list[7] == 'N-A'\
or make_list[7] == 'NONAPPLICABLE'\
or make_list[7] == 'NON.APPLICABLE' or 'NON-APPLICABLE':
make_list[7] = '0'
if ',' in make_list[7]:
make_list[7] = make_list[7].replace(',', '.')
if '-' in make_list[7]:
make_list[7] = make_list[7].replace('-', '')
if '°' in make_list[7]:
make_list[7] = make_list[7].replace('°', '')
if 'C' not in make_list[7] or 'F' not in make_list[7]\
or '0' not in make_list[7]:
if float(make_list[7]) > 45:
make_list[7] = round((float(make_list[7])-32)*(5/9), 2)
make_list[7] = str(make_list[7])
if 'C' in make_list[7]:
make_list[7] = make_list[7].replace('C', '')
if 'F' in make_list[7]:
make_list[7] = make_list[7].replace('F', '')
make_list[7] = round((float(make_list[7])-32)*(5/9), 2)
make_list[7] = round(float(make_list[7]), 2)
print(make_list[7])