[英]Printing a list within a list as a string on new lines
我真的在为这个问题苦苦挣扎,似乎无法在任何地方找到答案。 我有一个包含车站名称和位置的文本文件,任务是按顺序打印出所有车站的名称,位置也相同。
在我的文本文件中,站名总是由两个词组成,位置是三个词。
text_file = "London Euston 12 London 56, Aylesbury Vale 87 Parkway 99, James Cook 76 University 87, Virginia Water 42 Surrey 78"
期望的结果是:
Stations:
London Euston
Aylesbury Vale
James Cook
Virginia Water
Locations:
12 London 56
87 Parkway 99
76 University 87
42 Surrey 78
我当前的代码:
replaced = text_file.replace(","," ")
replaced_split = replaced.split()
i = 0
b = 2
stations = []
locations = []
while b < len(replaced_split):
locations.append(replaced_split[b:b+3])
b += 5
while i < len(replaced_split):
stations.append(replaced_split[i:i+2])
i += 5
for x in range(len(stations)):
print(stations[x])
for y in range(len(locations)):
print(dates[y])
The outcome I'm receiving is printing lists out:
['London', 'Euston']
['Aylesbury', 'Vale']
['James', 'Cook']
['Virginia', 'Water']
['12', 'London', '56']
['87', 'Parkway', '99']
['76', 'University', '87']
['42', 'Surrey', '78']
这是一种使用 for 循环而不是 while 循环的简单直接的方法。
代码的作用:它将您的字符串拆分为子字符串,其中每个 substring 由逗号和空格分隔。 之后,它再次按空格拆分这些子字符串,然后连接每个 substring 的前两个元素以创建站并将其附加到站列表,最后 substring 的 rest 留下前两个元素作为位置并将其附加到位置列表。 现在你循环列表来打印它们的元素
stations = []
locations = []
for char in text_file.split(", "):
parts = char.split(" ")
stations.append(" ".join(parts[:2]))
locations.append(" ".join(parts[2:]))
print("Stations:")
for station in stations:
print(station)
print("\nLocations:")
for location in locations:
print(location)
Stations:
London Euston
Aylesbury Vale
James Cook
Virginia Water
Locations:
12 London 56
87 Parkway 99
76 University 87
42 Surrey 78
不要简单地打印列表,而是先尝试加入列表,如下所示:
print(' '.join(stations[x]))
您甚至可以从此缩短整个循环:
for x in range(len(stations)):
print(stations[x])
对此:
print('\n'.join(' '.join(station) for station in stations))
在这里,正则表达式可以派上用场,而不是手动处理字符串。 首先将text_file
每个输入拆分为一行,然后使用两个捕获组来获取每个输入的站点和位置。 我们将站点和位置存储在两个 arrays 中,并在最后打印出来。
import re
text_file = "London Euston 12 London 56, Aylesbury Vale 87 Parkway 99, James Cook 76 University 87, Virginia Water 42 Surrey 78"
prog = re.compile(r'(\w+\s\w+)\s(\d+\s\w+\s\d+)')
lines = text_file.split(', ')
stations = []
locations = []
for line in lines:
result = prog.match(line)
stations.append(result.group(1))
locations.append(result.group(2))
print("Stations:")
for s in stations:
print(s)
print("\nLocations")
for l in locations:
print(l)
你正在做的工作和安排你想要的数据。 您只需要通过join
列表正确打印它。 在您现有的代码中,如果您更改为:
print(' '.join(stations[x]))
和:
print(' '.join(dates[y]))
您将获得所需的 output。
但是如果字符串的结构总是像你说的那样,你可以稍微简化一下逻辑:
text_file = "London Euston 12 London 56, Aylesbury Vale 87 Parkway 99, James Cook 76 University 87, Virginia Water 42 Surrey 78"
places = text_file.split(', ')
stations, locations = [], []
for place in places:
parts = place.split()
stations.append(' '.join(parts[:2]))
locations.append(' '.join(parts[2:]))
print("Stations:")
for station in stations:
print(station)
print("Locations:")
for location in locations:
print(location)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.