C#如何提取JSON字符串中的加密货币名称(如BTC、ETH等)
嘿,我来帮你搞定提取加密货币名称的事儿!其实不用手动抠字符串那么麻烦,有更靠谱的办法,当然也可以满足你原本的思路,下面给你几种方案:
最稳妥的方法:用JSON解析库(强烈推荐)
既然你的数据是标准的JSON格式,直接用编程语言的JSON解析工具是最可靠的,完全不用担心格式变化或者特殊字符的问题。以Python为例:
import json # 你的原始JSON字符串 crypto_json = '{"BTC":{"USD":7358.8},"ETH":{"USD":402.78},"LTC":{"USD":125.37},"DASH":{"USD":335.73},"XMR":{"USD":187.2},"NXT":{"USD":0.1272},"ZEC":{"USD":204.82},"XRP":{"USD":0.5296},"WAVES":{"USD":4},"BCH":{"USD":705.74},"EOS":{"USD":5.89},"XLM":{"USD":0.229},"ADA":{"USD":0.1601},"NEO":{"USD":52.03},"IOT":{"USD":1.07}}' # 把JSON字符串解析成Python字典 crypto_dict = json.loads(crypto_json) # 提取字典的所有键,就是你要的加密货币名称 crypto_names = list(crypto_dict.keys()) # 输出结果 print(crypto_names)
运行后你会得到一个包含所有加密货币名称的列表:['BTC', 'ETH', 'LTC', 'DASH', 'XMR', 'NXT', 'ZEC', 'XRP', 'WAVES', 'BCH', 'EOS', 'XLM', 'ADA', 'NEO', 'IOT']
这种方法的好处是,不管JSON格式怎么调整(比如键值对顺序变化、新增空格等),解析工具都能正确识别,不会出错。
手动字符串处理(符合你的初始思路)
如果你一定要手动处理字符串,也可以实现,但要注意这种方法只适合当前这种格式非常规整的JSON,一旦格式有变化(比如某个值里包含逗号或引号)就会失效。示例代码:
crypto_json = '{"BTC":{"USD":7358.8},"ETH":{"USD":402.78},"LTC":{"USD":125.37},"DASH":{"USD":335.73},"XMR":{"USD":187.2},"NXT":{"USD":0.1272},"ZEC":{"USD":204.82},"XRP":{"USD":0.5296},"WAVES":{"USD":4},"BCH":{"USD":705.74},"EOS":{"USD":5.89},"XLM":{"USD":0.229},"ADA":{"USD":0.1601},"NEO":{"USD":52.03},"IOT":{"USD":1.07}}' # 去掉首尾的大括号 trimmed_json = crypto_json.strip('{}') # 按逗号分割每个键值对 key_value_pairs = trimmed_json.split(',') crypto_names = [] for pair in key_value_pairs: # 分割出键的部分,去掉前后的引号 crypto_name = pair.split(':')[0].strip('"') crypto_names.append(crypto_name) print(crypto_names)
这个逻辑就是你原本想的:找到冒号前、引号后的内容,去掉冗余的引号和空格。
正则表达式提取(适合格式固定的场景)
如果你的JSON格式一直很规整,也可以用正则表达式直接匹配出所有加密货币名称:
import re crypto_json = '{"BTC":{"USD":7358.8},"ETH":{"USD":402.78},"LTC":{"USD":125.37},"DASH":{"USD":335.73},"XMR":{"USD":187.2},"NXT":{"USD":0.1272},"ZEC":{"USD":204.82},"XRP":{"USD":0.5296},"WAVES":{"USD":4},"BCH":{"USD":705.74},"EOS":{"USD":5.89},"XLM":{"USD":0.229},"ADA":{"USD":0.1601},"NEO":{"USD":52.03},"IOT":{"USD":1.07}}' # 匹配双引号内的大写字母/数字,后面跟着冒号的内容 pattern = r'"([A-Z0-9]+)":' crypto_names = re.findall(pattern, crypto_json) print(crypto_names)
这个正则会精准匹配你当前JSON里的加密货币名称,但如果之后有名称包含小写字母或特殊字符,需要调整正则表达式的规则。
内容的提问来源于stack exchange,提问作者weaverbeaver
相关产品推荐
相关产品推荐

