根据条件python追加字符串

时间:2018-05-23 03:38:15

标签: python-3.x

我只想根据自己的情况追加字符串。例如,所有以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"

1 个答案:

答案 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)