Python中将元组转为字符串并替换方括号为圆括号的问题
问题分析与解决
你的代码核心问题出在Python字符串的不可变性上:str.replace()方法不会修改原字符串本身,而是返回一个替换后的新字符串,你没有把这个新字符串重新赋值给变量,所以原字符串table_tpl根本没发生变化。
另外补充一个细节:你写的[(t) for t in df["factset_entity_id"]]其实不是创建单元素元组的列表——(t)只是普通括号包裹,不是元组,单元素元组必须写成(t,)。不过如果你的目标只是输出元组格式的字符串,这一步不影响最终结果;但如果实际需要生成元组对象,直接用tuple()转换更高效。
修正方案1:修复字符串替换的赋值问题
def fetch_values_from_csv_and_store_it_in_tuple(test_case_name,file_name): df = expected_df = read_csv( "{}/output/Float_Ingestion_Expected_Output_files/{}/{}.csv".format(str(parentDir), test_case_name, file_name), ',', False) # list of strings tables = list(df["factset_entity_id"]) # 修正为单元素元组的列表 table_tuples = [(t,) for t in df["factset_entity_id"]] table_tpl = str(table_tuples) # 关键:将替换后的新字符串重新赋值给变量 table_tpl = table_tpl.replace('[', '(') table_tpl = table_tpl.replace(']', ')') print(table_tpl)
修正方案2:直接生成元组再转字符串(更简洁)
如果你的目标就是得到元组格式的字符串,完全可以跳过列表转字符串再替换的步骤,直接把列数据转成元组再转字符串:
def fetch_values_from_csv_and_store_it_in_tuple(test_case_name,file_name): df = expected_df = read_csv( "{}/output/Float_Ingestion_Expected_Output_files/{}/{}.csv".format(str(parentDir), test_case_name, file_name), ',', False) # 直接将列数据转换为元组 table_tuple = tuple(df["factset_entity_id"]) print(str(table_tuple))
这样运行后就能得到你期望的('ABCXYZ-I', 'ABCXYZ-I', 'ABCXYZ-I')输出。
内容的提问来源于stack exchange,提问作者Pratik
相关产品推荐
相关产品推荐

