我想尽可能地更改字符串的变量类型。 (“ 6”将转换为6,“ 7.8”将转换为7.8,“ true”将转换为True,“ null”或空字符串将转换为None)
到目前为止,这是我的代码:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/data">
<xsl:copy>
<xsl:for-each select="post">
<xsl:sort select="Title"/>
<xsl:copy-of select="."/>
</xsl:for-each>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
运行代码后,variables_to_convert应该为[['abc',123,123.4,True,False,None]],但是,我只是再次获得了原始值。我是否还缺少初学者可以看到的东西?或者这是一些逻辑错误?
我向任何认为我的代码混乱或混乱的人致歉。这只是我要做的一个小功能,因此我没有花太多时间使它看起来不错。预先感谢!
答案 0 :(得分:3)
在循环中,变量不会直接引用列表,因此要更改任何值,您需要按索引引用原始列表,为此,您可以使用enumerate
from typing import List
def change_variable_type(variables: List[List[str]]) -> None:
for sublist in variables:
for index, element in enumerate(sublist):
if element:
if element.isnumeric():
sublist[index] = int(element)
elif element.replace('.', '').isnumeric():
sublist[index] = float(element)
elif element.lower() == 'true':
sublist[index] = True
elif element.lower() == 'false':
sublist[index] = False
else:
sublist[index] = None
return variables
variables_to_convert = [['abc', '123', '123.4', 'true', 'False', '']]
change_variable_type(variables_to_convert)
print(variables_to_convert)
输出:
[['abc', 123, 123.4, True, False, None]]
答案 1 :(得分:0)
您可以将变量重新分配回子列表:
def change_type(element):
if element.isnumeric(): #Checks if it's a number and converts to a float
element = float(element)
if element == int(element): #Checks if it can be an int, and converts if it can
element = int(element)
return element
elif element.lower() == 'false': #Checks if it can be False, and converts if it can
return False
elif element.lower() == 'true': #Checks if it can be True, and converts if it can
return True
elif element == 'null' or element == '': #Checks if it can be None, and converts if it can
return None
return element
def change_variable_type(variables):
for sublist in variables:
for index, element in enumerate(sublist):
sublist[index] = change_type(element)
variables_to_convert = [['abc', '123', '123.4', 'true', 'False', '']]
change_variable_type(variables_to_convert)
print(variables_to_convert)
根据要求输出