相关疑难解决方法(0)

如何相印JSON文件?

我有一个JSON文件是一个混乱,我想漂亮 - 在python中最简单的方法是什么?我知道PrettyPrint有一个"对象",我认为它可以是一个文件,但我不知道如何传入文件 - 只是使用文件名不起作用.

python json pretty-print

951
推荐指数
13
解决办法
89万
查看次数

多行的python pprint词典

我正试图获得一本字典的印刷品,但我没有运气:

>>> import pprint
>>> a = {'first': 123, 'second': 456, 'third': {1:1, 2:2}}
>>> pprint.pprint(a)
{'first': 123, 'second': 456, 'third': {1: 1, 2: 2}}
Run Code Online (Sandbox Code Playgroud)

我希望输出在多行上,如下所示:

{'first': 123,
 'second': 456,
 'third': {1: 1,
           2: 2}
}
Run Code Online (Sandbox Code Playgroud)

可以pprint这样吗?如果没有,那么哪个模块呢?我正在使用Python 2.7.3.

python dictionary python-2.7 pprint

61
推荐指数
3
解决办法
6万
查看次数

如何在Python中很好地打印出一本字典?

我刚刚开始学习python,我正在构建一个文本游戏.我想要一个库存系统,但我似乎无法打印出字典而不看起来很难看.这是我到目前为止:

def inventory():
    for numberofitems in len(inventory_content.keys()):
        inventory_things = list(inventory_content.keys())
        inventory_amounts = list(inventory_content.values())
        print(inventory_things[numberofitems])
Run Code Online (Sandbox Code Playgroud)

谢谢!

python

32
推荐指数
4
解决办法
4万
查看次数

Python相当于R的dput()函数

python中的任何函数是否与R中的dput()函数类似?

python r

28
推荐指数
4
解决办法
1042
查看次数

如何重写此函数以实现OrderedDict?

我有以下函数,它将XML文件解析为字典.

不幸的是,由于Python字典没有排序,我无法按照我的意愿循环遍历节点.

如何更改此值以便输出一个有序字典,该字典反映了使用'for'循环时节点的原始顺序.

def simplexml_load_file(file):
    import collections
    from lxml import etree

    tree = etree.parse(file)
    root = tree.getroot()

    def xml_to_item(el):
        item = None
        if el.text:
            item = el.text
        child_dicts = collections.defaultdict(list)
        for child in el.getchildren():
            child_dicts[child.tag].append(xml_to_item(child))
        return dict(child_dicts) or item

    def xml_to_dict(el):
        return {el.tag: xml_to_item(el)}

    return xml_to_dict(root)

x = simplexml_load_file('routines/test.xml')

print x

for y in x['root']:
    print y
Run Code Online (Sandbox Code Playgroud)

输出:

{'root': {
    'a': ['1'],
    'aa': [{'b': [{'c': ['2']}, '2']}],
    'aaaa': [{'bb': ['4']}],
    'aaa': ['3'],
    'aaaaa': ['5']
}}

a
aa
aaaa
aaa
aaaaa …
Run Code Online (Sandbox Code Playgroud)

python xml collections lxml

13
推荐指数
1
解决办法
7186
查看次数

在Python中创建2D字典

我有"集1",这就像"名","地点","动物","事"和"集2"具有相同的细节从输出的详细列表.

我想dict_names[setx]['name']...在这些行上创建一个字典等.

这是最好的方法吗?如果不是我该怎么办?

我不确定2D如何在字典中工作..任何指针?

python dictionary 2d key set

10
推荐指数
1
解决办法
3万
查看次数

以漂亮的格式打印字典键的简洁方法

我想获得字典中所有键(可能还有子键)的良好输出。因此我写道:

print("The keys in this dictionary are:\n")
for k in mydict.keys():
    print(k)
Run Code Online (Sandbox Code Playgroud)

这是有效的,但是有没有更简洁的方法来做到这一点?我尝试了列表理解,但是这当然会返回一个我无法与 may 介绍字符串连接的列表。有什么可以使用的功能吗?

编辑:字典可能是这样的:

mydict = {'key1':'value1',
          'key2':{'subkey1':'subvalue1','subkey2':'subvalue2'}}
Run Code Online (Sandbox Code Playgroud)

我对“漂亮的格式”的含义持开放态度。但是,也许是这样的:

key1
key2: subkey1, subkey2
Run Code Online (Sandbox Code Playgroud)

python dictionary

6
推荐指数
1
解决办法
8914
查看次数

导出python模块(到字符串或py文件)

摘要: 我想使用“模块”类型的变量并将其导出。

我正在使用import从.py文件中导入 python模块并对其进行更改。我需要将模块导出回文件或获取完整模块的字符串表示形式,然后可以将其写入磁盘。

我一直找不到任何方法可以导出python模块,也无法将模块内的对象转换为结构化,纯文本python可执行格式的字符串。(不是json,腌制等)

详细的问题和用例: 此要求是内部构建过程的一部分;没有安全要求,仅修改了我们自己的模块,而不是内置模块。python脚本与业务逻辑一起运行以修改许多其他脚本。此过程使用仅在构建时可用的信息。结果,我无法选择在运行时导入具有不同数据的模块。

最初的系统使用了带有占位符字符串的模板,该模板将被替换,但是当前的要求要求对对象声明进行更复杂的修改,其中以编程方式修改对象比替换字符串要容易得多。

我所做的事情 使用python编写的主生成器脚本,我可以导入多个模块(它们只有变量声明,没有可执行代码),并进行所有需要的替换。我剩下一个模块类型的变量,我需要将其导出回文件以供以后执行。

@abarnert有一些好主意。我不知道repr功能。那给了我信息,但没有任何格式。这使我看到了pprint,它与到目前为止我所想要的接近。

示例 example.py

    sample = {
    'level1_dict_1' : {
        'key1' : 'value1',
        'key2' : {
            'level2_dict' : {
                'key1' : 'value3',
                'key2' : ['list1','list2','list3','list4'],
            }
        }
    },
    'level1_dict_2' : {
        'key1' : 'value1',
        'key2' : 'value2',
    },
}
Run Code Online (Sandbox Code Playgroud)

大大简化了(并且没有应用任何业务逻辑),我基本上想执行以下操作:

with open("example.py","w") as outfile:
    example = __import__('example') # Import module 
    example.sample['level1_dict_1']['key2']['level2_dict']['key2'][2] = "newlistitem3"  # Change 1 property in a list nested a few levels deep
    outfile.write("sample = \n" …
Run Code Online (Sandbox Code Playgroud)

python

5
推荐指数
1
解决办法
3569
查看次数

以嵌套在字典中的字典中打印数据的方式很好吗?

尝试在包含在defaultdict中的字典的结构中显示数据

dictionary=defaultdic(dict)
Run Code Online (Sandbox Code Playgroud)

defaultdict = {key1} : 
                  {subkey1}:
                      (val1,
                       val2,
                       val3)
                  {subkey2}:
                      (val4,
                       val5,
                       val6)
              {key2} : 
                  {subkey3}:
                      (val7, 
                       val8, 
                       val9),
                  {subkey4}:
                      (val10,
                       val11,
                       val12)
Run Code Online (Sandbox Code Playgroud)

我试着这样做

for key in dictionary.iterkeys():
    print key # This will return me the key
    for items in dictionary[key]:
        print items # This will return me the subkey
        for values in dictionary[key][items]:
            print values #this return the values for each subkey)
Run Code Online (Sandbox Code Playgroud)

问题是我只是打印出一个单独的项目清单; 当你有太多的物品和钥匙时几乎不可能遵循.

你如何正确地打印这样复杂的结构,以一种不会让你睁开眼睛的方式呈现它们?我尝试使用pprint和json.dumps,但两者都没有让情况变得更好.理想情况下,我想在我的示例中打印它,但我看不到一种简单的方法,而不会通过复杂的字符串操作来格式化打印输出.

python

3
推荐指数
1
解决办法
4152
查看次数

Python提取列表中嵌套JSON中的所有键值

我有一个像下面这样的json:

{"widget": {
    "debug": "on",
    "window": {
        "title": "SampleWidget",
        "name": "main_window",
        "width": 500,
        "height": 500
    },
    "image": { 
        "src": "Images/Sun.png",
        "name": "sun1",
        "hOffset": 250,
        "vOffset": 250,
        "alignment": "center"
    },
    "text": {
        "data": "Click Here",
        "size": 36,
        "style": "bold",
        "name": "text1",
        "hOffset": 250,
        "vOffset": 100,
        "alignment": "center",
        "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
    }
}}
Run Code Online (Sandbox Code Playgroud)

我需要提取所有的键值对。例如debug=on,title=SampleWidget,name=main_window等等。我怎样才能以通用方式做到这一点?我的意思是 json 可以是示例中的 json 以外的任何其他内容,但过程应该是相同的。

python json

3
推荐指数
1
解决办法
4896
查看次数

标签 统计

python ×10

dictionary ×3

json ×2

2d ×1

collections ×1

key ×1

lxml ×1

pprint ×1

pretty-print ×1

python-2.7 ×1

r ×1

set ×1

xml ×1