python - 将字符串中的每一行转换为字典键
问题描述
嗨,我是 python 新手,不知道我是否可以在这个网站上问这个基本问题
我想将字符串中的每一行转换为一个键并将 0 分配为一个值
我的字符串是:
s = '''
sarika
santha
#
akash
nice
'''
我曾尝试过这种https://www.geeksforgeeks.org/ways-to-convert-string-to-dictionary/方式,但认为对我的要求没有用
请帮助任何人提前谢谢
编辑:
实际上我要求的是基本字符串,但我实际上是要跟随的字符串
s="""
san
francisco
Santha
Kumari
this one
"""
Here it should take {sanfrancisco:0 , santha kumari:0 , this one: 0 }
这是我面临的挑战
在我的字符串中,如果有超过 1 个新行间隙,它应该将下一行字符串作为一个单词并转换为键
解决方案
您可以连续匹配所有行后跟 2 个换行符,或者匹配所有行后跟一个换行符。
^(?:\S.*(?:\n\n\S.*)+|\S.*(?:\n\S.*)*)
模式匹配
^
字符串的开始(?:
非捕获组\S.*
匹配非空白字符和该行的其余部分(?:\n\n\S.*)+
重复匹配 1+ 次 2 个换行符、一个非空白字符和该行的其余部分|
或者\S.*
匹配单个非空白字符和该行的其余部分(?:\n\S.*)*
可选地匹配换行符、非空白字符和行的其余部分
)
关闭非捕获组
对于这些匹配项,用空格替换 2 个换行符并用空字符串替换一个换行符。
然后从这些值中,创建一个字典并用 0 初始化所有值。
例子
import re
s="""
san
francisco
Santha
Kumari
this one
"""
pattern = r"^(?:\S.*(?:\n\n\S.*)+|\S.*(?:\n\S.*)*)"
my_dict = dict.fromkeys(
[
re.sub(
r"(\n\n)|\n",
lambda n: " " if n.group(1) else "", s.lower()
) for s in re.findall(pattern, s, re.MULTILINE)
],
0
)
print(my_dict)
输出
{'sanfrancisco': 0, 'santha kumari': 0, 'this one': 0}
推荐阅读
- regex - 如何为端点重写执行 nginx 重写
- javascript - 在此循环中添加数组但显示 0 或未定义
- php - 如何使用 C 向特定网站发送获取请求?
- matlab - 如何一次复制2行?
- java - 如何打印 HiveMQ 客户端中的所有主题?(MQTT)
- sql - BIGQUERY:用另一个表中的用户 ID 替换一个表中的“空”结果
- c# - LCS算法:如何从一个表中找出,找到了多少个最长的公共子序列?
- ios - 如何预取 TableViewController 中的单元格?
- c++ - 如何通过使用非指针参数对指针进行操作的函数传递指针?
- python-3.x - 如何将值保存到一个列表中以在 Python 中进行迭代?