Python 如何使用pprint打印前10行而不是整个列表
我试图完成的是使用Python 如何使用pprint打印前10行而不是整个列表,python,Python,我试图完成的是使用pprint(dict(stru类型)) 这是我的密码 from collections import defaultdict str_type_re = re.compile(r'\b\S+\.?$', re.IGNORECASE) expected = ["Street", "Avenue", "Boulevard", "Drive", "Court", "Place", "Square", "Lane", "Road", "Trail", "
pprint(dict(stru类型))
这是我的密码
from collections import defaultdict
str_type_re = re.compile(r'\b\S+\.?$', re.IGNORECASE)
expected = ["Street", "Avenue", "Boulevard", "Drive", "Court", "Place", "Square", "Lane", "Road",
"Trail", "Parkway", "Commons"]
def audit_str_type(str_types, str_name, rex):
stn = rex.search(str_name)
if stn :
str_type = stn.group()
if str_type not in expected:
str_types[str_type].add(str_name)
我定义了一个函数,用于审核k=“addr:street”中的标记元素,以及任何与is_str_name函数匹配的标记元素
def audit(osmfile,rex):
osm_file = open(osmfile, "r", encoding="utf8")
str_types = defaultdict(set)
for event, elem in ET.iterparse(osm_file, events=("start",)):
if elem.tag == "node" or elem.tag == "way":
for tag in elem.iter("tag"):
if is_str_name(tag):
audit_str_type(str_types, tag.attrib['v'],rex)
return str_types
在上面的代码中,我使用“is_str_name”函数在调用审计函数审计街道名称时过滤标记
def is_str_name(elem):
return (elem.attrib['k'] == "addr:street")
str_types = audit(mydata, rex = str_type_re)
pprint.pprint(dict(str_types[:10]))
用于获取对象的字符串表示形式,而不是直接打印,然后可以将其按行拆分,并仅打印前几行:
whole_repr = pprint.pformat(dict(str_types))
for line in whole_repr.splitlines()[:10]:
print(line)
请注意,由于您没有MCVE,我无法对此进行测试,但我使用了一个更简单的示例进行了验证:
>>> import pprint
>>> thing = pprint.pformat({i:str(i) for i in range(10000)})
>>> type(thing), len(thing)
(<class 'str'>, 147779)
>>> for line in thing.splitlines()[:10]:print(line)
{0: '0',
1: '1',
2: '2',
3: '3',
4: '4',
5: '5',
6: '6',
7: '7',
8: '8',
9: '9',
导入pprint
>>>thing=pprint.pformat({i:str(i)表示范围(10000)内的i})
>>>类型(事物),len(事物)
(, 147779)
>>>对于对象中的行。拆分行()[:10]:打印(行)
{0: '0',
1: '1',
2: '2',
3: '3',
4: '4',
5: '5',
6: '6',
7: '7',
8: '8',
9: '9',
添加
import re
后,我得到了name错误:名称“mydata”未定义
请提供一个或至少是您得到的输出和预期输出。pprint.pprint(dict(str_types[:10]))
这有什么问题,它看起来确实只打印了10个。这真的需要一个。@MorganThrappstr\u types
是一个defaultdict
,它不支持切片。(但是,是的,这缺少了一个MCVE)@TadhgMcDonald Jensen哦,你是对的。顺便说一句,这就是为什么MCVE会非常有用的原因。