gpt4 book ai didi

Python 从列表中的字符串中删除空格

转载 作者:行者123 更新时间:2023-11-28 20:37:05 24 4
gpt4 key购买 nike

这是我的程序:

import sys
d = sys.stdin.readlines()
print(*d)
d = [x.strip(' ') for x in d]
print(*d)

这是我运行它时发生的情况:

>>> import program12 
Austin Houston 400
SanFrancisco Fresno 700
Miami Ames 500
# EOF
Austin Houston 400
SanFrancisco Fresno 700
Miami Ames 500

Austin Houston 400
SanFrancisco Fresno 700
Miami Ames 500

我的程序需要每行接受 2 个由空格分隔的字符串,后跟(可选)数字。我想用没有空格的方式将它们分开,所以它是:

['Austin', 'Houston', 400]

然后我想把它们放在一个“图表”中,所以我会使用类似的东西:

flights = collections.defaultdict(dict)

感谢任何帮助!

编辑:第一个答案是固定的!关于我之前的问题,我添加了这段代码,这会产生一个错误:现在我有这个:

import sys
d = sys.stdin.readlines()
print(*d)
d = [x.split() for x in d]
print(*d)
flights = {}
for each in d:
flights[each.split()[0]][each.split()[1]] = each.split()[2]

当我运行时:

>>> import program12
Austin Houston 400
SanFrancisco Fresno 700
Miami Ames 500
Austin Houston 400
SanFrancisco Fresno 700
Miami Ames 500

['Austin', 'Houston', '400'] ['SanFrancisco', 'Fresno', '700'] ['Miami', 'Ames', '500']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/program12.py", line 8, in <module>
flights[each.split()[0]][each.split()[1]] = each.split()[2]
AttributeError: 'list' object has no attribute 'split'

编辑 2:我的程序:

import sys
import collections
d = sys.stdin.readlines()
d = filter(None,d.split('\n'))
flights = {each.split()[0]:{each.split()[1]:''} for each in d}
for each in d:
sp = each.split();flights[sp[0]][sp[1]] = '' if len(sp) <= 2 else sp[2]

新错误:

>>> import program12
Austin Houston 400
SanFrancisco Fresno 700
Miami Ames 500
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/program12.py", line 4, in <module>
d = filter(None,d.split('\n'))
AttributeError: 'list' object has no attribute 'split'

最佳答案

这也对应于您之前的问题。str.split(' ') 与 str.split() 不同

>>> d1 =  [i.split(' ') for i in filter(None,d.split('\n'))]
>>> d1
[['Houston', 'Washington', '', '', '', '', '', '', '', '1000'], ['Vancouver', 'Houston', '300'], ['Dallas', 'Sacramento', '', '', '', '', '', '', '', '', '', '800'], ['Miami', '', '', '', '', '', '', '', '', '', '', 'Ames', '2000'], ['SanFrancisco', 'LosAngeles'], ['ORD', 'PVD', '1000']]

>>> d2 = [i.split() for i in filter(None,d.split('\n'))]
>>> d2
[['Houston', 'Washington', '1000'], ['Vancouver', 'Houston', '300'], ['Dallas', 'Sacramento', '800'], ['Miami', 'Ames', '2000'], ['SanFrancisco', 'LosAngeles'], ['ORD', 'PVD', '1000']]

基本上,您需要在访问之前形成您的字典!

>>> d
'\nHouston Washington 1000\nVancouver Houston 300\nDallas Sacramento 800\nMiami Ames 2000\nSanFrancisco LosAngeles\nORD PVD 1000\n'
>>> d1=filter(None,d.split('\n'))
>>> flights = {each.split()[0]:{each.split()[1]:''} for each in d1}
>>>
>>> flights
{'Houston': {'Washington': ''}, 'SanFrancisco': {'LosAngeles': ''}, 'Dallas': {'Sacramento': ''}, 'Miami': {'Ames': ''}, 'Vancouver': {'Houston': ''}, 'ORD': {'PVD': ''}}
>>> for each in d1:sp = each.split();flights[sp[0]][sp[1]] = '' if len(sp) <= 2 else sp[2]
...
>>> flights
{'Houston': {'Washington': '1000'}, 'SanFrancisco': {'LosAngeles': ''}, 'Dallas': {'Sacramento': '800'}, 'Miami': {'Ames': '2000'}, 'Vancouver': {'Houston': '300'}, 'ORD': {'PVD': '1000'}}

关于Python 从列表中的字符串中删除空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43840267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com