我是Python新手。我正在寻找从包含字符的文件中删除所有行的最佳方法。
例如,从下面开始,处理后只存在User1,User2,User3和User4。注意用户4有一个空格。
5!pY
"TmL
c]+y?"
|)}?E
\e2g%
User1
User2
User3
User 4
11-01-05
[GO-B
如果有人能指出我正确的方向,我会非常感激。
谢谢
答案 0 :(得分:2)
如果你可以确保你有一个用户字,你可以使用它来识别'有效'文本:你可以使用寻找字符串“User”的正则表达式后跟0或更多空格,后跟一个或多个数字:
>>> 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']
否则,您需要编辑问题并提供更多信息。
答案 1 :(得分: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']
答案 2 :(得分: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