我正在将数据从数据库导入到python数据框中。现在,我希望将数据用于进一步分析,但是,在使用之前我需要对数据进行一些清理。目前,所需列的格式为
('2275.1', '1950.4')
。我需要的输出应该是:2275.1
和1950.4
。
有人可以帮忙吗
答案 0 :(得分:0)
import re
print re.findall(r"\b\d+(?:\.\d+)?\b",test_str)
你可以这样做。
或
print map(float,re.findall(r"\b\d+(?:\.\d+)?\b",x))
如果您想要float
值。
答案 1 :(得分:0)
尝试ast.literal_eval
,它将其参数计算为常量Python表达式:
import ast
data = ast.literal_eval("('2275.1', '1950.4')")
# data is now the Python tuple ('2275.1', '1950.4')
x, y = data
# x is '2275.1' and y is '1950.4'
答案 2 :(得分:0)
我假设你提供的字符串实际上是python的输出。因此它是一个元组,包含两个字符串,它们是数字。如果是,并且您想要替换'
,则必须将它们转换为数字格式,例如float
:
a = ('2275.1', '1950.4')
a = [float (aI) for aI in a]
print a
[2275.1, 1950.4]
答案 3 :(得分:0)
这是一种方法:
import re
x = "'('2275.1', '1950.4')'"
y = re.findall(r'\d+\.\d', x)
for i in y:
print i
输出:
2275.1
1950.4
答案 4 :(得分:0)
这是一种非正则表达式方法:
data = (('2275.1', '1950.4'))
result = data[0]# 0 means the value in the first row
result2 = data[1]# 1 means the next row after 0
print result
print result2
输出:
>>>
2275.1
1950.4
>>>