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")
将对象格式化为字符串。