在Python中从变量中删除字符

在Python中从变量中删除字符,python,Python,我一直在使用天气网站openweathermap()获取Python项目的详细信息 rain = w.get_rain() # Get rain volume {'3h': 0} wind = w.get_wind() # Get wind degree and speed {'deg': 59, 'speed': 2.660} humidity = w.get_humidity() # Get humidity percentage 67 然后将变量插入到数据库中,这与“{”}”不同 我尝

我一直在使用天气网站openweathermap()获取Python项目的详细信息

rain = w.get_rain() # Get rain volume {'3h': 0} 
wind = w.get_wind() # Get wind degree and speed {'deg': 59, 'speed': 2.660}
humidity = w.get_humidity() # Get humidity percentage 67
然后将变量插入到数据库中,这与“{”}”不同

我尝试从输出中删除“{”}”,查看来自此站点的回复。带:

rain = rain.strip(['{','}'])
并替换:

rain = rain.replace('{', ' ')
但我得到的只是“AttributeError:‘dict’对象没有属性”。是否有另一个转义子句可用于变量以删除不需要的字符


将返回python字典,您需要访问键和值,而不是删除{}。下面显示了如何访问字典值

print(rain.keys()) # returns a list of all dictionary keys
>>> ['3h']

print(rain['3h']) # returns the value associated with the '3h' key
>>> 0

将返回python字典,您需要访问键和值,而不是删除{}。下面显示了如何访问字典值

print(rain.keys()) # returns a list of all dictionary keys
>>> ['3h']

print(rain['3h']) # returns the value associated with the '3h' key
>>> 0

由于您的变量是一个
dict
,因此需要为它创建一个合适的字符串表示形式。您可以使用自己的格式连接键和值,如下所示:

# a: 1, b: 2, c: 3
myString = ', '.join('{}: {}'.format(k, v) for k,v in myDict.items())
或修改返回的默认字符串表示形式


由于您的变量是一个
dict
,因此需要为它创建一个合适的字符串表示形式。您可以使用自己的格式连接键和值,如下所示:

# a: 1, b: 2, c: 3
myString = ', '.join('{}: {}'.format(k, v) for k,v in myDict.items())
或修改返回的默认字符串表示形式


首先,您需要知道您获得的数据类型:

print (type(obj))
这不是字符串,不能替换任何符号


再来一个。如果您像json对象一样从站点获取信息,则无需替换任何内容,因为您可以使用密钥解析信息,如果需要,还可以写入数据库。首先,您需要知道获取的数据类型:

print (type(obj))
这不是字符串,不能替换任何符号


再来一个。如果您像json对象一样从站点获取信息,那么您不需要替换任何内容,因为您可以使用key解析信息,如果需要,还可以写入数据库

将返回一个python字典,您需要调用key和value,而不是删除{}。我将添加一个答案,说明如何做到这一点。这里有一些问题,不清楚您想解决哪一个问题。您将从API返回JSON,因此您可能希望使用
JSON
模块处理响应。此外,如果您真的想存储整个JSON结果,而不仅仅是一个提取的值,而不是试图手动转义,那么应该使用数据库API来处理特殊字符。(实际上,
AttributeError
来自这样一个事实,即您确实有一个
dict
,而不是一个JSON对象,这就提出了一个问题:您所说的数据库不喜欢大括号是什么意思。)您期望的是什么?会返回一个python字典,您需要调用键和值,而不是删除{}。我将添加一个说明如何执行此操作的答案。这里有一些问题,不清楚您要解决哪一个问题。您正在从API返回JSON,因此您可能希望使用
JSON
模块处理响应。此外,如果您真的需要,您应该使用数据库API处理特殊字符存储整个JSON结果,而不仅仅是一个提取的值,而不是试图手动转义。(实际上,
AttributeError
来自这样一个事实,即您确实有一个
dict
,而不是一个JSON对象,这就提出了一个问题,即您所说的数据库不喜欢大括号是什么意思。)您期望的是什么?返回的错误是“AttributeError:“dict”对象没有属性”,因此我们知道它是一个字典。如果这是一个字典,我们可以在obj:rain=obj['rain']中写“if'rain'”,否则:rain=''返回的错误是“AttributeError:“dict”对象没有属性”所以我们知道这是一本字典。如果这是一本字典,我们可以在obj:rain=obj['rain']中写“if'rain',else:rain=''”谢谢,这真的很有帮助。我看的是{},而不是它们里面的内容。虽然它对所有其他键都有效,但“3h”似乎并不是键:File“weather.py”,第63行,in rain=(rain[“3h”])keyror:'3h'但谢谢你让我走上正轨。你可以运行rain.keys()来查看字典中的键,这可能有助于查看你可以在字典中访问的内容:)rain=w.get#rain()#get rain volume{'3h':0}>>打印rain.keys()>>输出:[]>>>嗯,不是很有帮助。你能打印“w.get_rain()”和“type(w.get_rain())”吗?如果第一个返回字典,.keys()方法应该没有理由返回空白。在tweet发出自己的消息后,他们会说“在JSON响应中没有提供rain值。如果它是测量的,它会在API响应中返回”。因此,如果下雨,你会得到一个响应,而不是你得到{},这会破坏SQL插入。我将尝试一些其他的东西,但暂时没有它对我的项目来说并不是一个巨大的损失。谢谢,这真的很有帮助。我看的是{},而不是里面的东西。虽然它对所有其他键都有效,“3h”似乎并不是键:文件“weather.py”,第63行,in rain=(rain[“3h”])keyror:“3h”但感谢您让我走上正确的轨道。您可以运行rain.keys()来查看此词典中的键,这可能有助于查看您可以访问的内部内容:)rain=w.get_rain()#get rain volume{'3h':0}>>>>打印rain.keys()>>>输出:[]>>>>嗯,不是很有帮助。您可以打印“w.get_rain()”和“type(w.get_rain())”吗?如果第一个返回字典,.keys()方法应该没有理由返回空白。在tweet发出自己的消息后,他们会说“在JSON响应中没有提供rain值。如果它是测量的,它会在API响应中返回”。因此,如果下雨,你会得到一个响应,而不是你得到{},这会破坏SQL插入。我打算尝试一些其他的东西,但这对我的公关来说并不是一个巨大的损失