python - 如何让 Python 将变量视为字符串的集合(列表或集合)
问题描述
我有一个简单的代码如下:
for link in links:
products[link] = get_products(link)
我期待links
成为一组字符串。但是,有时它是单个链接,Python 似乎将其分解为字符串中的单个字符,这不是我想要的。即使它是单个字符串,如何使它将链接视为一组字符串?
更新:链接来自:
def read_from_file(name):
with open(name, 'r') as file:
links = file.read()
links_set = links.split('\n')
return links_set
该文件每行包含一个链接。
解决方案
如果link
可以是一个set
或单个str
元素,isinstance
请用于检查:
for link in {links} if isinstance(links, str) else links:
这是一种代码异味,表明返回的过程links
不一致并且可能存在其他问题。
我通常也不推荐使用isinstance
任何东西,因为 Python 非常适合鸭式打字。根据我的经验,字符串可能是最常见的例外,因为它们(通常不方便)是可迭代的。检查的优点str
是它是一种非常特殊的类型,不太可能是鸭子类型,而set
, list
,tuple
等通常可以与您在此处显示的片段互换。
如果您不需要集合,则可以将单个字符串包装links
在您喜欢的任何其他容器类型中:[links]
,(links,)
等。我建议避免使用set
,因为它会消除排序信息,而序列类型则不会。
推荐阅读
- java - Java - 算法 - 显示序列的所有可能性
- java - JdbcTestUtils 和事务上下文测试
- debugging - 调试触发的 modsecurity 规则命中
- python - Python相关问题 - 用户输入日期/N00B/
- .htaccess - 如果uri是root,需要在htaccess中设置env
- php - PHP 注意:遇到格式不正确的数值 - 过时的代码?
- python - Pandas 分析 - KeyError:“请求的级别(var1)与索引名称(无)不匹配”
- laravel - 语法错误或访问冲突:1055 'adminlte3.orders.name' 不在 GROUP BY 中
- typescript - 如何定义仅接受某些用户定义类的实例的 Typescript 类型
- google-bigquery - 如何安排 GBQ 查询并每天将数据导出到 Excel 文件?