-1

私はPythonが初めてです。文字を含むファイルからすべての行を削除する最良の方法を探しています。

たとえば、以下から、処理後に User1、User2、User3、および User 4 のみが存在します。ユーザー 4 にスペースがあることに注意してください。

5!pY
"TmL
c]+y?"
|)}?E
\e2g%
User1
User2
User3
User 4
11-01-05
[GO-B

誰かが私を正しい方向に向けることができれば、私はそれを大いに感謝します.

ありがとう

4

3 に答える 3

2

ユーザーワードがあることを確認できる場合は、それを使用して「有効な」テキストを識別できます。文字列「User」、0個以上のスペース、その後に1つを検索する正規表現を使用できます。以上の桁:

>>> import re
>>> line='5!pY "TmL c]+y?" |)}?E \e2g% User1 User2 User3 User 4 11-01-05 [GO-B'
>>> regex=re.compile("User\s*\d+")
>>> regex.findall(line)
['User1', 'User2', 'User3', 'User 4']

それ以外の場合は、質問を編集して、もう少し情報を提供する必要があります。

于 2012-08-01T17:22:04.033 に答える
0

それらの行にはすべて文字が含まれていると思うので、句読点とスペースを意味していると思いますか?

import sys,string
xChars = string.punctuation + " "
for x in sys.stdin:
        for c in x. strip():
                if c in xChars:
                        break
        else:
                print x.strip()

サンプルデータを含むファイル「deleteme」でこのスクリプトを実行します。

> cat deleteme | python dellines.py 
User1
User2
User3
于 2012-08-01T17:31:43.327 に答える
0

文字、数字、またはスペース以外の文字を含むすべての行を削除する場合は、これでうまくいくはずです。

import string

data = """5!pY
TmL
c]+y?"
|)}?E
\e2g%
User1
User2
User3
User 4
11-01-05
[GO-B"""

allowed = string.letters + string.digits + ' '

clean_data = [item for item in data.split('\n') if set(item).issubset(allowed)]
print clean_data #  ['TmL', 'User1', 'User2', 'User3', 'User 4']
于 2012-08-01T17:30:43.870 に答える