使用正则表达式在python的json文件中查找和提取模式

使用正则表达式在python的json文件中查找和提取模式,python,json,python-2.7,Python,Json,Python 2.7,我试图找到并提取json文件中的模式。如果我将此作为一个测试,它会查找并打印它,因为json.dumps使它成为一个字符串: my_mi = {"_links": {"self": {"href": "/xx-beta/media/111ee111-1e11-11a1-b111/metadata"}}} new = json.dumps(my_mi) my_id = re.findall(r'\w{1,9}\-\w{1,5}\-\w{1,5}\-\w{1,5}\-\w{

我试图找到并提取json文件中的模式。如果我将此作为一个测试,它会查找并打印它,因为json.dumps使它成为一个字符串:

    my_mi =  {"_links": {"self": {"href": "/xx-beta/media/111ee111-1e11-11a1-b111/metadata"}}}
    new = json.dumps(my_mi)
    my_id = re.findall(r'\w{1,9}\-\w{1,5}\-\w{1,5}\-\w{1,5}\-\w{1,13}', 
    new) 
    print my_id
问题是,当我尝试将其作为json文件使用时,我在转换它时遇到了问题,因为它无法在不抛出错误TypeError:is not json serializable的情况下工作,这就是它对以下内容所做的:

    with open ("resTwo.json", "r") as input_file:
        new = json.dumps(input_file)

        my_id = (re.findall(r'\w{1,9}\-\w{1,5}\-\w{1,5}\-\w{1,5}\-\w{1,13}', new))
        print my_id

我认为json.dumps会转换成字符串,这样正则表达式就可以像测试示例一样工作了?

从csv阅读器对象返回的行将是列表。re.findall需要一个字符串作为第二个参数

指定要正则表达式匹配的字段,或者添加另一个for循环来迭代每个字段,即迭代行

我解决了这个问题:

    for value in input_file:
        mediaid = (re.findall(r'\w{1,9}\-\w{1,5}\-\w{1,5}\-\w{1,5}\-\w{1,13}', value))

所以我想要的字符串在第[0]行,但当我让它打印出来时,它看起来是这样的:{u links:{self:{href:/xx beta/media/111ee111-1e11-11a1-b111-111bb11b0ada/metadata}}因此,如果我想让正则表达式在该字段上匹配,我是否需要将其转换为字符串,以便它可以做到这一点?如果它遍历行,它们的格式仍然不适用于正则表达式,即findall所期望的字符串,对吗?因此,我想更多地解释如何这样做,以便匹配正则表达式所期望的语法。而不是ks。这看起来不像csv文件。它是json,但该文件在它来自的脚本中保存为csv。如果一开始是json,会有更简单的解决方案吗?我尝试将其作为json使用,但也没有成功地将其作为字符串或正则表达式可以使用的东西。我将把这个问题改为js而不是csv,因为考虑到它的语法,这更有意义。