如何移除Lambda处理CSV后返回JSON的前导多余空格?
移除CSV转JSON中的前导多余空格解决方案
针对你遇到的问题——需要移除输出JSON中的前导多余空格(保留字段内部正常空格),以下是几种针对性的解决方法:
1. 清理DataFrame列名的前导/尾随空格
如果原始CSV的列名本身带有前导空格(比如 Ticker),会导致生成的JSON键名带空格。读取CSV后直接清理列名即可:
import json import awswrangler as wr BUCKET_NAME = 'olaptrader-products' DIRECTORY_PATH = '1' FULL_PATH = f"s3://{BUCKET_NAME}/{DIRECTORY_PATH}" def lambda_handler(event, context): raw_df = wr.s3.read_csv(path=FULL_PATH, path_suffix=['.csv'], use_threads=True) # 去除列名的前导和尾随空格 raw_df.columns = raw_df.columns.str.strip() df_json = raw_df.to_json(orient="records") parsed = json.loads(df_json) return { "statusCode": 200, 'body': json.dumps(parsed) }
2. 清理字符串字段值的前导空格(保留内部空格)
如果CSV中字符串类型的字段值带有前导空格(比如 ABC Company),需要仅去除前导空格、保留字段内部的正常空格,可对字符串列做针对性处理:
import json import awswrangler as wr BUCKET_NAME = 'olaptrader-products' DIRECTORY_PATH = '1' FULL_PATH = f"s3://{BUCKET_NAME}/{DIRECTORY_PATH}" def lambda_handler(event, context): raw_df = wr.s3.read_csv(path=FULL_PATH, path_suffix=['.csv'], use_threads=True) # 筛选所有字符串类型的列 string_cols = raw_df.select_dtypes(include=['object']).columns # 仅去除每个字段值的前导空格 raw_df[string_cols] = raw_df[string_cols].apply(lambda col: col.str.lstrip()) df_json = raw_df.to_json(orient="records") parsed = json.loads(df_json) return { "statusCode": 200, 'body': json.dumps(parsed) }
3. 生成紧凑格式的JSON(避免多余空格)
如果希望输出的JSON完全紧凑(无键值对之间的多余空格),可以直接在to_json中指定分隔符,省去重复解析再序列化的步骤,提升效率:
import json import awswrangler as wr BUCKET_NAME = 'olaptrader-products' DIRECTORY_PATH = '1' FULL_PATH = f"s3://{BUCKET_NAME}/{DIRECTORY_PATH}" def lambda_handler(event, context): raw_df = wr.s3.read_csv(path=FULL_PATH, path_suffix=['.csv'], use_threads=True) # 按需添加列名或字段值的清理逻辑 # 直接生成无多余空格的紧凑JSON compact_json = raw_df.to_json(orient="records", separators=(',', ':')) return { "statusCode": 200, 'body': compact_json }
内容的提问来源于stack exchange,提问作者bob
相关产品推荐
相关产品推荐

