如何计算所有具有序列号的单词?Python3

2024-10-01 11:28:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含网站列表的.txt文件。所有网站的列表如下:

web1=www.facebook.com
web1pass=password123
web2=www.instagram.com
web2pass=password123
web3=www.youtube.com
web3pass=password123
web4=www.twitter.com
web4pass=password123

我想数一数所有有序列号的“网络”单词。我的密码是:

with open(datafile, "r") as file:
   data = file.readlines()
   web_count = 0
            
   for line in data:
      if line.split("=")[0] == "web": # I thought using web* might work.
         web_count = web_count + 1
            
    print(f"{web_count} websites found.")

有没有一种方法可以编写计算所有网站的代码?最好没有任何模块。先谢谢你


Tags: 文件txtcomweb列表datafacebook网站
3条回答

因为您要检查文本开头是否有“web”。你可能想去^{}

例如:

text = "web132=blabla.com"

result = text.startswith('web')
print(result) #True

我不确定序列号。如果您想确保文本在“web”字符串后面有一个数字序列,那么您肯定应该使用Regex。一个简单的正则表达式应该可以做到这一点,比如:(?:web)\d+

这应该起作用:

with open(datafile, "r") as file:
   data = file.readlines()
   web_count = 0
            
   for line in data[::2]:
      if line.startswith("web"):
         web_count += 1
            
   print(f"{web_count} websites found.")

只通过第0、2、4行。。。(数据[::2])

您可以使用regex来获取像web1web2这样的子字符串,然后创建set来删除任何重复项,最后将其传递给内置的len来获取计数

import re

>>> len(set(re.findall('web\d+', line)[0] for line in f.readlines())) #f is fileBuffer
#output:
4

如果您不想使用正则表达式,您可以使用字符串方法,但这将是不必要的复杂

相关问题 更多 >