Python将字符串添加到列表循环中

标签 python string list loops python-3.x

我有一个来自 Python HTMLParser 的 var vk_read ,它处理如下数据:['id168233095']

现在我试图在脚本在列表中运行后从这个 var 'vk_read' 收集所有数据。应该是这样的:['id168233095', 'id1682334534', 'id16823453', 'etc...']

if vk_read:
    vk_ids = []
    for line in vk_read:
        if vk_read != '':
            vk_ids.append(vk_read)
            print(vk_ids)

这是结果:

['id168233095']
['id168233095', 'id168233095']
['id168233095', 'id168233095', 'id168233095']
['id168233095', 'id168233095', 'id168233095', 'id168233095']
['id168233095', 'id168233095', 'id168233095', 'id168233095', 'id168233095']
['id168233095', 'id168233095', 'id168233095', 'id168233095', 'id168233095', 'id168233095']

更改一些建议代码后(请参阅本文末尾)

if vk_read not in vk_ids:
    vk_ids.append(vk_read)
print(vk_ids)

但在这种情况下结果是:

['id45849605']
['id91877071']
['id17422363']
['id119899405']
['id65045632']
['id168233095']

这意味着我的 vk_read 将自身添加最多 10 次,然后我的脚本开始添加下一个。

还尝试list.insert() - 并得到相同的结果。 (!!!)

在脚本运行与从解析文件中找到数据一样多的次数后,如何运行此循环以捕获一个列表中的所有不同结果。

注意: 我已按照 list1.append(list0) 的建议更新了代码,但在我的情况下,此方法仍然返回与上述相同的结果。 并更改了列表名称以避免进一步混淆。

最后更新 谢谢你们的帮助,伙计们,你们真的以正确的方式插入了我:same on stackoverflow

The problem appears to be that you are reinitializing the list to an empty list in each iteration:

from html.parser import HTMLParser
import re, sys, random, csv

with open('test.html', 'r', encoding='utf-8') as content_file:
    read_data = content_file.read()

vk_ids = []

class MyHTMLParser(HTMLParser):

    def handle_starttag(self, tag, attrs):
        href = str(attrs)
        for line in href:
            id_tag = re.findall('/\S+$', href)
            id_raw = str(id_tag)

            if re.search('/\w+\'\)\]', id_raw):
                global vk_read
                vk_read = id_raw
            else:
                break
            for ch in ['/', ')', '[', ']', '"', "'"]:
                if ch in vk_read:

                    vk_read = vk_read.replace(ch, "")

            # https://stackoverflow.com/questions/30328193/python-add-string-to-a-list-loop
            for vk_id in vk_read:
                if vk_id not in vk_ids:
                    vk_ids.append(vk_read)
                    break
            print(vk_ids)
            break

注意 最后一次更改后

print(type(vk_ids))
<class 'list'>

最佳答案

怎么样:

vk_ids = []
if vk_read:
    for line in vk_read:
        vk_ids.append(format(line))
    print(vk_ids)

关于Python将字符串添加到列表循环中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30328193/

相关文章:

python - 按特定顺序生成元组列表

python - 在 ctype 结构中使用无符号整数时报告无效 JSON

python - 使用 asdf 让 tkinter 在 macos 上使用 python 3.x

python - 如何从特殊点切割字符串

string - 如何根据正在进行的特定标准修剪字符串 openge 4gl?

将字符串元素与 ASCII 值进行比较

Python读取UDP C#流

python - Telegram 中是否可以通过按钮复制到剪贴板?

html - 将文本和图像放在列表项中的同一行 - html/css

python - 我需要以特定方式安排我的列表 - python