Python 如何将文件中的str作为整数获取?

Python 如何将文件中的str作为整数获取?,python,list,Python,List,我编写了一个代码,生成这样的文件 import sys file = open('output.txt','w') x = [1,2,3,4,5,6,7,8,9,10] f = [i**2 for i in x] g = [i**3/100 for i in x] strlist = list(map(str,f)) strlist1 = list(map(str,g)) file.write(','.join(strlist)) file.write('\n') file.write('.

我编写了一个代码,生成这样的文件

import sys
file = open('output.txt','w')
x = [1,2,3,4,5,6,7,8,9,10]
f = [i**2 for i in x]
g = [i**3/100 for i in x]

strlist = list(map(str,f))
strlist1 = list(map(str,g))

file.write(','.join(strlist))
file.write('\n')
file.write('.'.join(strlist1))
[1,4,9,16,25,36,49,64,81,100]
[0.01.0.08.0.27.0.64.1.25.2.16.3.43.5.12.7.29.10.0]
结果是(文件内容)

我想把这个文件读成整数,这样列一个列表

import sys
file = open('output.txt','w')
x = [1,2,3,4,5,6,7,8,9,10]
f = [i**2 for i in x]
g = [i**3/100 for i in x]

strlist = list(map(str,f))
strlist1 = list(map(str,g))

file.write(','.join(strlist))
file.write('\n')
file.write('.'.join(strlist1))
[1,4,9,16,25,36,49,64,81,100]
[0.01.0.08.0.27.0.64.1.25.2.16.3.43.5.12.7.29.10.0]
我在尝试时遇到了这个错误

with open('output.txt','r') as a:
    data = a.readlines()[0]


with open('output.txt','r') as a:
    data1 = a.readlines()[1]

intlist = []
intlist.append(data)

['1,4,9,16,25,36,49,64,81,100\n']
['0.01.0.08.0.27.0.64.1.25.2.16.3.43.5.12.7.29.10.0']

如何修复它?

您做了一个完整的过程,使它成为一个由
分隔的
字符串,但没有做相反的操作

strlist = list(map(str,f))
strlist1 = list(map(str,g))

a = ','.join(strlist)
b = ','.join(strlist1)

strlist_as_int = [int(i) for i in a.split(',')]
strlist1_as_float = [float(i) for i in b.split(',')]

print(strlist_as_int)
print(strlist1_as_float)
输出:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[0.01, 0.08, 0.27, 0.64, 1.25, 2.16, 3.43, 5.12, 7.29, 10.0]
为了使其成为一个完整的答案,有时(在实际情况下而不是合成情况下),行可以包含非整数或非浮点元素,在这种情况下,最佳做法是错误处理异常,如下所示:

def convert_int_with_try_except(num):
    try:
        converted_int = int(num)
        return converted_int
    except ValueError:
        return num
        
def convert_float_with_try_except(num):
    try:
        converted_float = float(num)
        return converted_float
    except ValueError:
        return num
        
strlist = list(map(str,f)) + ["not_an_int"]
strlist1 = list(map(str,g)) + ["not_a_float"]

a = ','.join(strlist)
b = ','.join(strlist1)

strlist_as_int = [convert_int_with_try_except(i) for i in a.split(',')]
strlist1_as_float = [convert_float_with_try_except(i) for i in b.split(',')]

print(strlist_as_int)
print(strlist1_as_float)
输出-注意列表中附加的“非整数”和“非浮点”:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 'not_an_int']
[0.01, 0.08, 0.27, 0.64, 1.25, 2.16, 3.43, 5.12, 7.29, 10.0, 'not_a_float']

您做了一个完整的过程,使其成为一个由
分隔的
字符串,但没有做相反的操作

strlist = list(map(str,f))
strlist1 = list(map(str,g))

a = ','.join(strlist)
b = ','.join(strlist1)

strlist_as_int = [int(i) for i in a.split(',')]
strlist1_as_float = [float(i) for i in b.split(',')]

print(strlist_as_int)
print(strlist1_as_float)
输出:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[0.01, 0.08, 0.27, 0.64, 1.25, 2.16, 3.43, 5.12, 7.29, 10.0]
为了使其成为一个完整的答案,有时(在实际情况下而不是合成情况下),行可以包含非整数或非浮点元素,在这种情况下,最佳做法是错误处理异常,如下所示:

def convert_int_with_try_except(num):
    try:
        converted_int = int(num)
        return converted_int
    except ValueError:
        return num
        
def convert_float_with_try_except(num):
    try:
        converted_float = float(num)
        return converted_float
    except ValueError:
        return num
        
strlist = list(map(str,f)) + ["not_an_int"]
strlist1 = list(map(str,g)) + ["not_a_float"]

a = ','.join(strlist)
b = ','.join(strlist1)

strlist_as_int = [convert_int_with_try_except(i) for i in a.split(',')]
strlist1_as_float = [convert_float_with_try_except(i) for i in b.split(',')]

print(strlist_as_int)
print(strlist1_as_float)
输出-注意列表中附加的“非整数”和“非浮点”:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 'not_an_int']
[0.01, 0.08, 0.27, 0.64, 1.25, 2.16, 3.43, 5.12, 7.29, 10.0, 'not_a_float']

首先,在编写strlist1时,使用“
”作为分隔符,以避免混淆点是否表示小数点

file.write(','.join(strlist))
file.write('\n')
file.write(','.join(strlist1)) # <- note the joining str
输出:

~ python script.py
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[0.01, 0.08, 0.27, 0.64, 1.25, 2.16, 3.43, 5.12, 7.29, 10.0]

首先,在编写strlist1时,使用“
”作为分隔符,以避免混淆点是否表示小数点

file.write(','.join(strlist))
file.write('\n')
file.write(','.join(strlist1)) # <- note the joining str
输出:

~ python script.py
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[0.01, 0.08, 0.27, 0.64, 1.25, 2.16, 3.43, 5.12, 7.29, 10.0]

你的错误是什么?以帮助我们更快地解决它。如果字符串不是来自文件,您也会这样做。这是否回答了您的问题?请注意,这是以空格分隔的,但此处应用相同的逻辑。错误是什么?以帮助我们更快地解决它。如果字符串不是来自文件,您也会这样做。这是否回答了您的问题?请注意,这是以空格分隔的,但此处应用相同的逻辑为什么这
映射(str,f)
?默认情况下,文本文件中的数据是stringYou完全正确,该部分是复制粘贴的,与问题中的一样。为什么这
映射(str,f)
?默认情况下,文本文件中的数据是stringYou绝对正确,该部分是从问题中复制粘贴的。