我只想根据自己的情况追加字符串。例如,所有以http开头的字符串都不会被附加,但是每个字符串中的所有其他字符串都将被附加。
words = []
store1 = []
disregard = ["http","gen"]
for all in glob.glob(r'MYDIR'):
with open(all, "r",encoding="utf-16") as f:
text = f.read()
lines = text.split("\n")
for each in lines:
words += each.split()
for each in words:
if len(each) == 40 and each not in disregard:
store1.append(each)
更新
if disregard[0] not in each:
有效,但我如何将其与列表中的所有内容进行比较?使用无视只是不起作用 这是我的输入文本文件:
http://1234ashajkhdajkhdajkhdjkaaaaaaad1
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
genp://1234ashajkhdajkhdajkhdjkaaaaaaad1
a\a
唯一可以追加的是" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
答案 0 :(得分:-1)
基本结构看起来不错,似乎它破坏的地方没有设置正确的条件。你说你想用提供的字符串检查每行启动的位置,但是你拆分每一行并检查这些字符串的存在。请改用.startswith()
。这也将使得它不会成为" http"之后的空间。为了捕获该字符串。
此外,条件测试应该放在构建单词列表的循环之后,否则单词列表应该在每个循环开始时重置,这样你就不会重新测试你的单词了。已经检查过了。
# adjusted some variable names for clarity
words = []
output = []
disregard = ["http","gen"]
for fname in glob.glob(r'MYDIR'):
with open(fname, "r", encoding="utf-16") as f:
text = f.read()
lines = text.split("\n")
for line in lines:
words += line.split()
for word in words:
if len(word) == 40 and not any([word.startswith(dis) for dis in disregard]):
output.append(each)