2024-04-25 17:19:57 发布
网友
我正在用Python编写一个程序,它接受用户输入(不使用Python的内置input),用户输入是一个包含字符串列表的字符串,即'["hello", "world"]'。但是,有些输入中会有多个引号,即'["Hello", "wor"ld"]'。我需要字符串总是eval()到列表。有没有关于清理输入字符串以确保它总是求值的建议?已尝试.replace('"', '\"')。在
input
'["hello", "world"]'
'["Hello", "wor"ld"]'
eval()
.replace('"', '\"')
我几乎讨厌自己这样做,但它可能真的有用。首先,选择一个永远不会被用户输入的符号(例如,字或~)。然后,删除末尾开头的有效引号,并将项目之间的所有有效引号替换为该符号:
s = '["Hello", "wor",ld" , " ]' s1 = re.sub(r"(\[\s*\")|(\"\s*,?\s*\])", "", s) # 'Hello", "wor",ld" , ' s1 = re.sub(r"\"\s*,\s*\"", "字", s1) # 'Hello字wor",ld" , '
最后,转义所有剩余的双引号,用项目分隔符替换有趣的符号,并添加括号:
这是一个有点困难的问题,因为计算机很难知道哪些引用是无关的,哪些是有意引用的。我能想到的最好的解决方案是首先删除所有的双引号和空格,然后在“[”字符的任何实例后面添加双引号,在任何逗号后插入空格和双引号,在每个逗号和“]”之前插入双引号。这不是一个优雅的解决方案,可能需要几行代码,但除非您可以在程序的早期清理输入,否则这可能是最好的解决方案。在
我几乎讨厌自己这样做,但它可能真的有用。首先,选择一个永远不会被用户输入的符号(例如,字或~)。然后,删除末尾开头的有效引号,并将项目之间的所有有效引号替换为该符号:
最后,转义所有剩余的双引号,用项目分隔符替换有趣的符号,并添加括号:
^{pr2}$这是一个有点困难的问题,因为计算机很难知道哪些引用是无关的,哪些是有意引用的。我能想到的最好的解决方案是首先删除所有的双引号和空格,然后在“[”字符的任何实例后面添加双引号,在任何逗号后插入空格和双引号,在每个逗号和“]”之前插入双引号。这不是一个优雅的解决方案,可能需要几行代码,但除非您可以在程序的早期清理输入,否则这可能是最好的解决方案。在
相关问题 更多 >
编程相关推荐