1

私はこのように見える複数の要素を含む巨大なリストを持っています:

'A.21,48;B.64,91;C.95,125;D.139,166;E.175,200'

すべてのアルファベットと文字を削除し; .て、リストが次のようになるようにリストに追加したい['21','48','64','91','95','125','139','166','175','200']

私は使ってみました:

import re
list.append(re.sub("\D","", <the string i am working on>))

しかし、それはこのようなリストになります-[' 21 48 64 91 95 125 139 166 175 200']

非常に大きなファイルのループ内で作業しているので、1行のコードが非常に役立ちます。

ありがとうございました

4

1 に答える 1

3

あなたが使用することができますre.findall()

>>> import re
>>> strs='A.21,48;B.64,91;C.95,125;D.139,166;E.175,200'
>>> re.findall(r"\d+",strs)
['21', '48', '64', '91', '95', '125', '139', '166', '175', '200']

使用re.sub()

>>> re.sub(r"[A-Z;,.]"," ",strs).split()
['21', '48', '64', '91', '95', '125', '139', '166', '175', '200']

help(re.findall):

Help on function findall in module re:

findall(pattern, string, flags=0)
Return a list of all non-overlapping matches in the string.

If one or more groups are present in the pattern, return a
list of groups; this will be a list of tuples if the pattern
has more than one group.

Empty matches are included in the result.
于 2013-03-20T21:12:10.990 に答える