私はPythonが初めてです。文字を含むファイルからすべての行を削除する最良の方法を探しています。
たとえば、以下から、処理後に User1、User2、User3、および User 4 のみが存在します。ユーザー 4 にスペースがあることに注意してください。
5!pY
"TmL
c]+y?"
|)}?E
\e2g%
User1
User2
User3
User 4
11-01-05
[GO-B
誰かが私を正しい方向に向けることができれば、私はそれを大いに感謝します.
ありがとう
私はPythonが初めてです。文字を含むファイルからすべての行を削除する最良の方法を探しています。
たとえば、以下から、処理後に User1、User2、User3、および User 4 のみが存在します。ユーザー 4 にスペースがあることに注意してください。
5!pY
"TmL
c]+y?"
|)}?E
\e2g%
User1
User2
User3
User 4
11-01-05
[GO-B
誰かが私を正しい方向に向けることができれば、私はそれを大いに感謝します.
ありがとう
ユーザーワードがあることを確認できる場合は、それを使用して「有効な」テキストを識別できます。文字列「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']
それ以外の場合は、質問を編集して、もう少し情報を提供する必要があります。
それらの行にはすべて文字が含まれていると思うので、句読点とスペースを意味していると思いますか?
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
文字、数字、またはスペース以外の文字を含むすべての行を削除する場合は、これでうまくいくはずです。
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']