python-3.x 将列表中的列表打印为新行上的字符串

cczfrluj  于 2023-01-27  发布在  Python
关注(0)|答案(4)|浏览(156)

我真的很纠结于这个问题,似乎找不到一个答案。我有一个文本文件,其中有车站和位置的名称,任务是打印出车站的名称都在对方的顺序和相同的位置。
在我的文本文件中,车站的名称总是由两个字组成,位置是3个字。

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

我的当前代码:
一个二个一个一个

icnyk63a

icnyk63a1#

这是一个简单直接的方法,使用for循环代替while循环。

    • 代码的作用:**它将字符串拆分为子字符串,每个子字符串用逗号和空格分隔。之后,它再次用空格拆分这些子字符串,然后连接每个子字符串的前两个元素以创建站点,并将其附加到站点列表中。最后,子字符串的其余部分将前两个元素保留为位置,并将其附加到位置列表中。现在,循环列表以打印其元素
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
voj3qocg

voj3qocg2#

不要简单地打印列表,尝试先加入列表,如下所示:

print(' '.join(stations[x]))

您甚至可以缩短整个循环:

for x in range(len(stations)):
   print(stations[x])

改为:

print('\n'.join(' '.join(station) for station in stations))
a5g8bdjr

a5g8bdjr3#

正则表达式在这里可以派上用场,而不是手动处理字符串。首先将text_file拆分为每个输入一行,然后使用两个捕获组获取每个输入的站点和位置。我们将站点和位置存储在两个数组中,并在最后打印出来。

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)
8yoxcaq7

8yoxcaq74#

您所做的工作会按照您的需要排列数据。您只需要正确地打印它,通过joining列表。在现有代码中,如果您更改为:

print(' '.join(stations[x]))

以及:

print(' '.join(dates[y]))

您将获得所需的输出。
但是如果字符串的结构总是像下面这样,就可以简化一点逻辑:

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)

相关问题