在Python中以单行打印

new*_*ane 0 python

鉴于一些代码:

keyword=re.findall(r'ke\w+ = \S+',s)
score=re.findall(r'sc\w+ = \S+',s)
print '%s,%s' %(keyword,score)
Run Code Online (Sandbox Code Playgroud)

上面代码的输出是:

['keyword = NORTH','keyword = GUESS','keyword = DRESSES','keyword = RALPH','keyword = MATERIAL'],['得分= 88466','得分= 83965','得分= 79379' ,'得分= 74897','得分= 68168']

但我希望格式应该是不同的行:

NORTH,88466
GUESS,83935
DRESSES,83935
RALPH,73379
MATERIAL,68168
Run Code Online (Sandbox Code Playgroud)

Ray*_*ger 8

而不是最后一行,改为:

>>> for k, s in zip(keyword, score):
        kw = k.partition('=')[2].strip()
        sc = s.partition('=')[2].strip()
        print '%s,%s' % (kw, sc)


NORTH,88466
GUESS,83965
DRESSES,79379
RALPH,74897
MATERIAL,68168
Run Code Online (Sandbox Code Playgroud)

下面是它的工作原理:

  • 拉链带来的相应的元件一起成对.

  • 分区分割像字符串'keyword = NORTH'分成三个部分(等号,等号本身,和之后的部分之前的部分.所述[2]保持只有后者的一部分.

  • 所述条带移除的前缘和后空格.

或者,您可以使用组捕获关键字和分数而不包含周围文本,从而修改正则表达式以完成大部分工作:

keywords = re.findall(r'ke\w+ = (\S+)',s)
scores = re.findall(r'sc\w+ = (\S+)',s)
for keyword, score in zip(keywords, scores):
    print '%s,%s' %(keyword,score)
Run Code Online (Sandbox Code Playgroud)

  • 尼斯.如果``='``上的`partition()`,则不需要`strip()`:-) (2认同)
  • 对于您的特定数据,没有.在分隔符可能不存在或多次出现的情况下,`partition`通常更容易使用,因为你总是得到一个3项目列表,其中`split`可能会抛出异常或给你多个项目. (2认同)