Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中将数字字符串转换为数字,并将日期保留为字符串_Python_String - Fatal编程技术网

在python中将数字字符串转换为数字,并将日期保留为字符串

在python中将数字字符串转换为数字,并将日期保留为字符串,python,string,Python,String,应更改列表,以便在每个子列表中,除日期外的所有元素都转换为数字类型(FLOAT或int…以适当的为准)。因此元素['2014-01-29','1119.12','1121.75','1099.42','1106.92','2379900','1106.92']将变成['2014-01-29',1119.12,1121.75,1099.42,1106.92,2379900,1106.92] 注意:请勿在此创建其他列表。更改传入的列表 s = ['4/5/2013', '19.7', '20.35'

应更改列表,以便在每个子列表中,除日期外的所有元素都转换为数字类型(FLOAT或int…以适当的为准)。因此元素
['2014-01-29','1119.12','1121.75','1099.42','1106.92','2379900','1106.92']
将变成
['2014-01-29',1119.12,1121.75,1099.42,1106.92,2379900,1106.92]
注意:请勿在此创建其他列表。更改传入的列表

s = ['4/5/2013', '19.7', '20.35', '19.69', '20.3', '521000', '19.02']
['4/4/2013', '19.5', '19.85', '19.45', '19.85', '527500', '18.6']
['4/3/2013', '19.46', '19.56', '19.36', '19.55', '307800', '18.32']
['4/2/2013', '19.18', '19.52', '19.16', '19.52', '400200', '18.29']
['4/1/2013', '19.08', '19.25', '19.08', '19.21', '168100', '18']
['3/28/2013', '18.9', '19.25', '18.86', '19.19', '331100', '17.98']
['3/27/2013', '18.91', '19.03', '18.75', '19', '341600', '17.8']
['3/26/2013', '18.78', '19.1', '18.6', '19.02', '637900', '17.82']
['3/25/2013', '19', '19.15', '18.38', '18.9', '1244300', '17.71']
['3/22/2013', '19', '19.34', '18.6', '18.86', '10274900', '17.67']

使用列表理解

>>> s = ['4/5/2013', '19.7', '20.35', '19.69', '20.3', '521000', '19.02']
>>> [float(i) if not '/' in i else i for i in s]
['4/5/2013', 19.7, 20.35, 19.69, 20.3, 521000.0, 19.02]

实际上,问题中的数据是一组字符串列表。如果它们都存储在名为
s
的列表中,下面介绍如何转换它们:

s = [['4/5/2013', '19.7', '20.35', '19.69', '20.3', '521000', '19.02'],
     ['4/4/2013', '19.5', '19.85', '19.45', '19.85', '527500', '18.6'],
     ['4/3/2013', '19.46', '19.56', '19.36', '19.55', '307800', '18.32'],
     ['4/2/2013', '19.18', '19.52', '19.16', '19.52', '400200', '18.29'],
     ['4/1/2013', '19.08', '19.25', '19.08', '19.21', '168100', '18'],
     ['3/28/2013', '18.9', '19.25', '18.86', '19.19', '331100', '17.98'],
     ['3/27/2013', '18.91', '19.03', '18.75', '19', '341600', '17.8'],
     ['3/26/2013', '18.78', '19.1', '18.6', '19.02', '637900', '17.82'],
     ['3/25/2013', '19', '19.15', '18.38', '18.9', '1244300', '17.71'],
     ['3/22/2013', '19', '19.34', '18.6', '18.86', '10274900', '17.67']]

for lst in s:
    for i, substring in enumerate(lst):
        for kind in (int, float):
            try:
                lst[i] = kind(substring)
                break  # succeeded
            except ValueError:
                pass  # keep trying (or give-up)
    print(lst)
输出:

['4/5/2013',19.7,20.35,19.69,20.3,521000,19.02]
['4/4/2013', 19.5, 19.85, 19.45, 19.85, 527500, 18.6]
['4/3/2013', 19.46, 19.56, 19.36, 19.55, 307800, 18.32]
['4/2/2013', 19.18, 19.52, 19.16, 19.52, 400200, 18.29]
['4/1/2013', 19.08, 19.25, 19.08, 19.21, 168100, 18]
['3/28/2013', 18.9, 19.25, 18.86, 19.19, 331100, 17.98]
['3/27/2013', 18.91, 19.03, 18.75, 19, 341600, 17.8]
['3/26/2013', 18.78, 19.1, 18.6, 19.02, 637900, 17.82]
['3/25/2013', 19, 19.15, 18.38, 18.9, 1244300, 17.71]
['3/22/2013', 19, 19.34, 18.6, 18.86, 10274900, 17.67]

您尝试了什么?上面的输入显示了语法错误。“注释:…”感觉非常像您在尝试之前让我们做家庭作业。我觉得stackoverflow不应该鼓励人们停止学习编程,所以我认为你应该重新考虑这样问。s=['4/5/2013','19.7','20.35','19.69','20.3','521000','19.02']其他元素没有名字。请参阅此处,了解如何将列表中的各个元素转换为浮点字符串: