我需要一些帮助来完成下周一的家庭作业。我是一个编程初学者,我的任务是编写一个函数,将像['a','b','c']这样的字符串转换成类似“abc”的东西
我已经试了一段时间了,但是我好像想不通。如果有人能帮助我,告诉我我犯了什么错误,还有什么需要改进,我会非常感激的!你知道吗
这就是我要改变的:
content = ["[['a','b','c'],['a','b1','c2'],['a2','b2','c']]\n",
'[[\'Spain\',\'name\',\'"Spain"\'],[\'Spain\',\'capital\',\'Madrid\'],
[\'Madrid\',\'a\',\'Capital\']] \n',
'[[\'Spain\',\'name\',\'"Spain"\'],
[\'Spain\',\'capital\',\'Madrid\'],
[\'Madrid\',\'a\',\'Capital\'],[\'Capital\',\'a\',\'City\'],
[\'Spain\',\'neighbours\',\'France\'],[\'Spain\',\'a\',\'Country\']] \n']
这是我目前的代码:
def makesimple(triple):
## It is a suggestion to first write a function that transforms the triples ...
for i in content:
v = i.split("\n")
ii = "\t".join(v)
pass
def ntriple(graph):
## ... and then loops through all triples in the graph
for i in range(len(graph)):
return(graph[i:])
pass
for l in content:
print(ntriple(eval(l.strip())))
结果应该是这样的:
['a b c .', 'a b1 c2 .', 'a2 b2 c .']
['Spain name "Spain" .', 'Spain capital Madrid .', 'Madrid a Capital .']
['Spain name "Spain" .', 'Spain capital Madrid .', 'Madrid a Capital .', 'Capital a City .', 'Spain neighbours France .', 'Spain a Country .']
但我得到的结果是:
[['a', 'b', 'c'], ['a', 'b1', 'c2'], ['a2', 'b2', 'c']]
[['Spain', 'name', '"Spain"'], ['Spain', 'capital', 'Madrid'], ['Madrid', 'a', 'Capital']]
[['Spain', 'name', '"Spain"'], ['Spain', 'capital', 'Madrid'], ['Madrid', 'a', 'Capital'], ['Capital', 'a', 'City'], ['Spain', 'neighbours', 'France'], ['Spain', 'a', 'Country']]
我真的希望这是足够清楚,提前感谢您的帮助很多!你知道吗
回答标题中的问题,您可以这样做:
问题是函数只返回整个
graph
,而不是将其转换为字符串。你知道吗相反,如果总是正好有三个元素,则可以使用
format
字符串:示例:
结果:
对于您的“字符串列表列表”格式:(a)如果不一定要使用,请不要使用该格式,(b)其中似乎有一些放错位置的引号,(c)修复这些后,您仍然有一个列表列表,即您不能直接将
ntriple
应用于eval(l)
,而是应用于该列表中的每个元素:结果:
使用列表理解和
ast.literal_eval
完整代码:
这将导致:
相关问题 更多 >
编程相关推荐