Python 将字典转换为字符串

Python 将字典转换为字符串,python,python-2.7,dictionary,Python,Python 2.7,Dictionary,在python中将字典转换为字符串时遇到问题。我试图从我的一个变量中提取信息,但似乎无法删除信息周围的方括号 for line in str(object): if line.startswith ('['): new_object = object.replace('[', '') 有没有办法去掉方括号,或者我必须找到另一种方法从字典中删除信息? 编辑: 更详细地说,我想做的是 import requests city = 'dublin' country = 'ir

在python中将字典转换为字符串时遇到问题。我试图从我的一个变量中提取信息,但似乎无法删除信息周围的方括号

for line in str(object):
    if line.startswith ('['):
        new_object = object.replace('[', '')
有没有办法去掉方括号,或者我必须找到另一种方法从字典中删除信息? 编辑:

更详细地说,我想做的是

import requests
city = 'dublin'
country = 'ireland'

info = requests.get('http://api.openweathermap.org/data/2.5/weather?q='+city +','+ country +'&mode=json')

weather = info.json()['weather']

fh = open('/home/Ricky92d3/city.txt', 'w')
fh.write(str(weather))
fh.close()
fl = open('/home/Ricky92d3/city.txt')
Object = fl.read()
fl.close()

for line in str(Object):
    if line.startswith ('['):
        new_Object = Object.replace('[', '')
    if line.startswith ('{'):
        new_Object = Object.replace('{u', '')

print new_Object

我希望这能让我想做的事情更清楚一点

我不太确定你在这里想做什么(没有看到你的字典),但是如果你有一个像
x=“[myString]”这样的字符串
你可以做以下事情:

x = x.replace("[", "").replace("]", "")
如果这不起作用,您很有可能会收到返回的列表。如果是这种情况,您应该会看到如下错误:

>>> x = [1,2,3]
>>> x.replace("[", "")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'replace'
这是通过在您获取的项目列表中循环,并使用a将其作为一行写入csv文件来实现的

奖金


不要调用字典
对象
-它是核心语言的保留字。

我不太确定你在这里想做什么(没有看到你的字典),但是如果你有一个像
x=“[myString]”这样的字符串
,你可以执行以下操作:

x = x.replace("[", "").replace("]", "")
如果这不起作用,您很有可能会收到返回的列表。如果是这种情况,您应该会看到如下错误:

>>> x = [1,2,3]
>>> x.replace("[", "")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'replace'
这是通过在您获取的项目列表中循环,并使用a将其作为一行写入csv文件来实现的

奖金


不要调用字典
对象
——它是核心语言的保留字。

info.json()
返回的对象是Python字典,因此您可以使用正常的Python语法访问其内容。我承认这可能会有点棘手,因为JSON字典通常包含其他字典和列表,但如果您以良好的格式打印JSON对象,通常不太难弄清楚是什么。最简单的方法是使用标准Python
json
模块中的
dumps()
函数

下面的代码将JSON数据检索到名为
data

然后,它从数据的“天气”项中的列表中打印“说明”字符串 然后,它将所有数据(不仅仅是“天气”项)保存为ASCII编码的JSON文件。
然后,它再次将JSON数据读回一个名为
newdata
的新dict,并漂亮地打印出来。 最后,它再次打印天气描述,以验证我们是否恢复了之前看到的天气状况。:)

输出

description: light intensity shower rain

{
    "clouds": {
        "all": 75
    }, 
    "name": "Dublin", 
    "visibility": 10000, 
    "sys": {
        "country": "IE", 
        "sunset": 1438374108, 
        "message": 0.0118, 
        "type": 1, 
        "id": 5237, 
        "sunrise": 1438317600
    }, 
    "weather": [
        {
            "description": "light intensity shower rain", 
            "main": "Rain", 
            "id": 520, 
            "icon": "09d"
        }
    ], 
    "coord": {
        "lat": 53.340000000000003, 
        "lon": -6.2699999999999996
    }, 
    "base": "stations", 
    "dt": 1438347600, 
    "main": {
        "pressure": 1014, 
        "humidity": 62, 
        "temp_max": 288.14999999999998, 
        "temp": 288.14999999999998, 
        "temp_min": 288.14999999999998
    }, 
    "id": 2964574, 
    "wind": {
        "speed": 8.1999999999999993, 
        "deg": 210
    }, 
    "cod": 200
}

description: light intensity shower rain

info.json()
返回的对象是Python字典,因此您可以使用普通Python语法访问其内容。我承认这可能会有点棘手,因为JSON字典通常包含其他字典和列表,但如果您以良好的格式打印JSON对象,通常不太难弄清楚是什么。最简单的方法是使用标准Python
json
模块中的
dumps()
函数

下面的代码将JSON数据检索到名为
data

然后,它从数据的“天气”项中的列表中打印“说明”字符串 然后,它将所有数据(不仅仅是“天气”项)保存为ASCII编码的JSON文件。
然后,它再次将JSON数据读回一个名为
newdata
的新dict,并漂亮地打印出来。 最后,它再次打印天气描述,以验证我们是否恢复了之前看到的天气状况。:)

输出

description: light intensity shower rain

{
    "clouds": {
        "all": 75
    }, 
    "name": "Dublin", 
    "visibility": 10000, 
    "sys": {
        "country": "IE", 
        "sunset": 1438374108, 
        "message": 0.0118, 
        "type": 1, 
        "id": 5237, 
        "sunrise": 1438317600
    }, 
    "weather": [
        {
            "description": "light intensity shower rain", 
            "main": "Rain", 
            "id": 520, 
            "icon": "09d"
        }
    ], 
    "coord": {
        "lat": 53.340000000000003, 
        "lon": -6.2699999999999996
    }, 
    "base": "stations", 
    "dt": 1438347600, 
    "main": {
        "pressure": 1014, 
        "humidity": 62, 
        "temp_max": 288.14999999999998, 
        "temp": 288.14999999999998, 
        "temp_min": 288.14999999999998
    }, 
    "id": 2964574, 
    "wind": {
        "speed": 8.1999999999999993, 
        "deg": 210
    }, 
    "cod": 200
}

description: light intensity shower rain

为什么在
str(object)
版本上循环?您现在正在迭代单个字符。你想解决的问题是什么?你能给我们一个示例
对象
值,并告诉我们更多关于你的预期输出吗?为什么不直接循环字典呢?您可以循环键、值或成对的键和值。您不能使用
str(yourdictionary)
将其转换为字符串吗?您可以轻松地直接从
weather
中的列表访问JSON数据。例如,
打印天气[0]['description']
当前打印的是
碎云
。但是,如果您需要将其写入文件并再次读取,则应使用标准Python模块写入并读取。请包括预期的输出和确切的错误消息(如果有)。为什么要循环使用
str(object)
版本?您现在正在迭代单个字符。你想解决的问题是什么?你能给我们一个示例
对象
值,并告诉我们更多关于你的预期输出吗?为什么不直接循环字典呢?您可以循环键、值或成对的键和值。您不能使用
str(yourdictionary)
将其转换为字符串吗?您可以轻松地直接从
weather
中的列表访问JSON数据。例如,
打印天气[0]['description']
当前打印的是
碎云
。但是,如果您需要将其写入文件,然后再次读取,则应使用标准Python模块写入并读取。请包括预期的输出和确切的错误消息(如果有)。+1作为奖励。也许它看起来很琐碎,但注意保留的单词是非常重要的。这可能会导致严重的bug。我试图从JSON api中获取信息。我将变量保存为“weather=info.json()['weather']”,并将结果保存为文本文件。然后循环删除信息开头的“[”括号,但是“new_Object=Object.replace(“[”,“”)不会影响它+1作为奖励。也许它看起来微不足道,但注意保留字非常重要。这可能会导致严重的错误。我正在尝试接受inf