4

「List:」の横にすべてのユーザー名がリストされた「userlist」という名前のリストを作成しようとしていますが、「List:」の行を解析し、「,」に基づいて分割してリストに入れるという考えです。行をキャプチャできません。これをどのように達成できるかについての入力はありますか?

output="""             alias: tech.sw.host
             name: tech.sw.host
            email: tech.sw.host
           email2: tech.sw.amss
             type: email list
   look_elsewhere: /usr/local/mailing-lists/tech.sw.host
             text: List tech SW team
  list_supervisor: <username>
             List: username1,username2,username3,username4,
                 : username5
          Members: User1,User2,
                 : User3,User4,
                 : User5 """
#print output
userlist = []
for line in output :
    if "List" in line:
        print line
4

5 に答える 5

0

これが私の2つの解決策です。これらは本質的に同じですが、最初のほうが理解しやすいです。

import re

output = """   ... """

# First solution: join continuation lines, the look for List

# Join lines such as username5 with previous line
#             List: username1,username2,username3,username4,
#                 : username5
# becomes
#             List: username1,username2,username3,username4,username5
lines = re.sub(r',\s*:\s*', ',', output)

for line in lines.splitlines():
    label, values = [token.strip() for token in line.split(':')]
    if label == 'List':
        userlist = userlist = [user.strip() for user in values.split(',')]       
print 'Users:', ', '.join(userlist)


# Second solution, same logic as above
# Different means
tokens, = [line for line in re.sub(r',\s*:\s*', ',', output).splitlines() 
        if 'List:' in line]
label, values = [token.strip() for token in tokens.split(':')]
userlist = userlist = [user.strip() for user in values.split(',')]
print 'Users:', ', '.join(userlist)
于 2013-08-06T20:00:58.543 に答える
0

これを試して:

for line in output.split("\n"):
    if "List" in line:
        print line

Python が文字列をコレクションのように扱うように要求されると、その文字列の各文字をそのコレクションのメンバーとして扱います (達成しようとしている各行とは対照的に)。

これは、各行を印刷することでわかります。

>>> for line in ph:
...     print line
... 

a
l
i
a
s
:

t
e
...

ところで、これを処理するはるかに優れた方法があります。Python の組み込み RegEx ライブラリを参照することをお勧めします: http://docs.python.org/2/library/re.html

于 2013-08-06T19:14:16.203 に答える