我正在抓取一个包含卫星值表的网站 ( https://planet4589.org/space/gcat/data/cat/satcat.html )。
因为每个条目仅由空格分隔,所以我需要一种将数据条目字符串拆分为数组的方法。
但是,该.split()函数不适合我的需要,因为某些数据条目有空格(例如Able 3),我不能只拆分由空格分隔的所有内容。
然而,它变得更加棘手。在某些没有可用数据的情况下,使用破折号(“-”)。如果两个数据条目仅由一个空格分隔,并且其中一个是破折号,则我不想将其作为一个条目包含在内。
例如,假设我们有两个条目“ Able 3 ”和“ - ”,仅由一个空格分隔。在文件中,它们将显示为“ Able 3 - ”。我想将此字符串拆分为单独的数据条目“ Able 3 ”和“ - ”(作为列表,这将是["Able 3", "-"])。
另一个例子是需要将“ data1 - ”拆分为["data1", "-"]
几乎,我需要将一个字符串拆分为一个列表或由空格分隔的单词,除非单词之间有一个空格,并且其中一个不是破折号。
此外,正如您所看到的,桌子很大。我想过遍历每个字符,但这太慢了,我需要运行数千次。
这是文件开头的示例:
JCAT Satcat Piece Type Name PLName LDate Parent SDate Primary DDate Status Dest Owner State Manufacturer Bus Motor Mass DryMass TotMass Length Diamete Span Shape ODate Perigee Apogee Inc OpOrbitOQU AltNames
S00001 00001 1957 ALP 1 R2 8K71A M1-10 8K71A …Run Code Online (Sandbox Code Playgroud) 在 if/elif/else 语句中,elif如果 theif为假,则检查 s ,如果 theif和elifs 都为假,else则运行the 。
For 循环与else关键字类似- 如果循环没有遇到中断,则else运行内部代码。
因此,for 循环else相当于 if/elif/else 语句。然而,我的问题是,是否有等效于elif.
我认为这将是以下方面的事情:
运行 for 循环。如果没有break遇到,则进入下一个指定的循环
运行指定的 for 循环,如果没有break遇到,则进入下一个。
重复直到没有更多的循环,如果break到目前为止没有
遇到s ,则运行else.
我知道你可以模仿这种效果。正如您可以使用 if/else 语句来模拟elif:
if condition:
do_something()
else:
if another_condition:
do_something_else()
else:
default()
Run Code Online (Sandbox Code Playgroud)
你可以用 for 循环来做到这一点:
for x in y:
if condition:
break
else:
for n in …Run Code Online (Sandbox Code Playgroud)