我遇到了一个令人难以置信的问题,我试图删除数据keyword.txt的所有空格,只保留字母字符串。但是,在循环遍历并将每个空格替换为空字段后,输出中仍然会看到一个新的行,因此会造成另一个输出的混乱。
我不知道该怎么做。
剧本:
#!/usr/bin/python
kf = open ('keyword.txt', 'r')
sl = open ('syslog.txt', 'r')
keywordList = []
for keyword in kf:
keyword = keyword.replace('\n', "")
keywordList.append(keyword)
print keyword
for string in sl:
for keyword in keywordList:
if keyword in string:
print "**"+keyword+"**"它产生的输出的一个示例:
**anacron**
****
**anacron**
****
**CRON**
****您可以看到****出现在行中,因为它将空空间识别为关键字。这就是问题所在。
keyword.txt
NetworkManager
avahi-daemon
dnsmasq
dbus
kernel
dhclient
CRON
bluetoothd
failsafe
modem-manager
udev-configure-printer
modem-manager
polkitd
anacron
acpid
rt-kit daemon
goa
AptDaemon
AptDaemon.PackageKit
AptDaemon.Worker
python发布于 2015-04-10 22:56:50
看起来,空格不是每个单词的一部分,而是一个单独的单词。
试着读像这样的文件
kf = [x.strip() for x in open('keyword.txt', 'r') if not x.strip() == '']然后像你正在做的那样循环遍历列表。
其他变体包括
kf = [x.strip() for x in open('keyword.txt', 'r') if x.strip() != '']
kf = [x.strip() for x in open('keyword.txt', 'r') if x.strip()]如评论中所述
发布于 2015-04-10 23:15:26
您的KeywordList可能包含重复的关键字。尝试使用set来代替:
keywords = set()
for keyword in kf:
keyword = keyword.replace('\n', "")
keywords.add(keyword)
print keyword
for string in sl:
for keyword in keywords:
if keyword in string:
print "**"+keyword+"**"我用这些数据做了试验,结果成功了.
kf = ['anacron\n','anacron\n','CRON\n']
sl = ['a sentence with anacron\n','another sentence\n', 'one more\n', 'anacron\n','finally\n','one with CRON\n']https://stackoverflow.com/questions/29571885
复制相似问题