Python 将带负数的字符串转换为浮点列表
我正在努力将一个带有数字的字符串(其中一些是负数)转换为浮动列表 我正在从一个文件中读取数据,该文件每行有许多数字。我想根据这些数字制作一个浮动列表,以便以后能够使用它们。我正在努力使负数正确读取。为了让事情更清楚,我正在输入文件的每一行上运行一个函数,我希望返回列表中的浮动 我尝试了isdigit()、float()和许多正则表达式。到目前为止没有成功。提供的代码显示了我尝试过的一些方法Python 将带负数的字符串转换为浮点列表,python,type-conversion,Python,Type Conversion,我正在努力将一个带有数字的字符串(其中一些是负数)转换为浮动列表 我正在从一个文件中读取数据,该文件每行有许多数字。我想根据这些数字制作一个浮动列表,以便以后能够使用它们。我正在努力使负数正确读取。为了让事情更清楚,我正在输入文件的每一行上运行一个函数,我希望返回列表中的浮动 我尝试了isdigit()、float()和许多正则表达式。到目前为止没有成功。提供的代码显示了我尝试过的一些方法 def find_float(input): temp_list = [] print("
def find_float(input):
temp_list = []
print("line just now being read is: {} ".format(input))
#1[DIDN'T WORK] number = re.findall(r"-?\d*\.\d+|\d+", input)
#2[DIDN'T WORK] number = re.findall("([+-](?=\.?\d))?(\d+)?(\.\d+)", input)
#3[DIDN'T WORK] number = re.findall(r"[-]?([1-9]{1}[0-9]{0,}(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|\.[0-9]{1,2})", input)
#4[DIDN'T WORK] number = re.findall(r"\-?(\d+\.?\d*|\d*\.?\d+)", input)
#5[DIDN'T WORK]for item in input:
# try:
# number = float(item)
# extracted_numbers.append(number)
print("Found number is: {}".format(number))
temp_list.append(number)
return temp_list
上面所有的regexpr都是负号:他们把数字读为正数。其他方法让我没有任何负数
Input_file.txt:(请注意,每行末尾都有尾随空格)
我希望每行都能得到这样的列表
0 8.42 43 -1.5
-259 0.832
522 -32
-3.33
12 -3 -45
[0,8.42,43,-1.5]
[-259,0.832]
[522,-32]
[-3.33]
[12,-3,-45]
--提前感谢您的建议:)试试这个:
In [1]: with open('test.txt', 'r') as f:
...: data = f.readlines()
In [2]: results = []
In [3]: for line in data:
...: entry = []
...: for num in line.split(' '):
...: if num.replace('-', '').strip().isdigit():
...: entry.append(int(num))
...: else:
...: try:
...: entry.append(float(num))
...: except Exception:
...: pass
...: results.append(entry)
In [4]: results
Out[4]:
[[0, 8.42, 43, -1.5],
[-259, 0.832],
[522, -32],
[-3.33],
[12, -3, -45]]
试试这个:
In [1]: with open('test.txt', 'r') as f:
...: data = f.readlines()
In [2]: results = []
In [3]: for line in data:
...: entry = []
...: for num in line.split(' '):
...: if num.replace('-', '').strip().isdigit():
...: entry.append(int(num))
...: else:
...: try:
...: entry.append(float(num))
...: except Exception:
...: pass
...: results.append(entry)
In [4]: results
Out[4]:
[[0, 8.42, 43, -1.5],
[-259, 0.832],
[522, -32],
[-3.33],
[12, -3, -45]]
使用您的示例数据:
with open('Input_file.txt') as f:
for line in f:
data = [float(n) for n in line.split()]
print(data)
输出:
[0.0, 8.42, 43.0, -1.5]
[-259.0, 0.832]
[522.0, -32.0]
[-3.33]
[12.0, -3.0, -45.0]
使用您的示例数据:
with open('Input_file.txt') as f:
for line in f:
data = [float(n) for n in line.split()]
print(data)
输出:
[0.0, 8.42, 43.0, -1.5]
[-259.0, 0.832]
[522.0, -32.0]
[-3.33]
[12.0, -3.0, -45.0]
您的输入文件是否只包含空格分隔的数字?如果是这样的话,您可以简单地迭代这些行并使用split方法。目前确实如此,但我想让它更通用。脚本将用于从Matlab导入数据,可能会使用各种分隔符。您的输入文件是否只包含以空格分隔的数字?如果是这样的话,您可以简单地迭代这些行并使用split方法。目前确实如此,但我想让它更通用。脚本将用于从Matlab导入数据,可能会使用各种分隔符。