函数参数作为 F 字符串更改变量的输入


def cleaning(input):
name = str(input)
read_file = pd.read_csv('#f"{name}".csv')
print(read_file)
cleaning(InputKeyword)

我的函数必须采用输入关键字,这会将"name"更改为"#input"单词。 我正在尝试使用 f-strigs,但它不起作用。任何想法或推荐,我在哪里可以找到解决方案? 提前感谢:)

read_file = pd.read_csv('#f"{name}".csv')

实际上不是一个 f 字符串,它是一个普通的字符串,里面有一个f、一些引号和一些大括号。f 字符串必须以 (令人惊讶的)f:-)为前缀

我建议你尝试这样的事情:

read_file = pd.read_csv(f"#{name}.csv")

如果name字符串包含xyzzy,这将尝试处理文件#xyzzy.csv

此外,使用内置函数作为变量名称是一个非常糟糕的主意。input函数就是这样一个例子。以下(完整)代码段解决了这两个问题:

# Assumes file_base is a string, see below.
def cleaning(file_base):
read_file = pd.read_csv(f"#{file_base}.csv")
print(read_file)
cleaning("someString")

请注意,您可以将任意表达式放在 f 字符串中,而不仅仅是变量名称。因此,无需将name创建为单独的(命名)对象,您只需在大括号内插入str(file_base)即可。

但是,对于您的特定情况,我认为没有必要使用str(file_base},因为从巡回演出评论中可以看出file_base已经是一个字符串,我相信没有format_spec的字符串的格式只是字符串本身(a)。

这就是为什么我在上面的代码中f"#{file_base}.csv"没有围绕file_base变量的str()


(a)对于一般对象,f 字符串中的{object}片段将调用对象的__format__()方法,传入所使用的format_spec。因此,f"{something:314159}将使用对象方法调用something.__format__("314159")将对象格式化为字符串。

相关内容

  • 没有找到相关文章

最新更新