Python 将字符串每行中的第一个单词存储到列表中

Python 将字符串每行中的第一个单词存储到列表中,python,python-3.x,Python,Python 3.x,我有一个包含多行的字符串。每行用“\n”分隔,每个单词后都包含逗号。我想将每行中的第一个单词存储到一个列表中 以下是字符串输出: AIG,10,,,,Yes,,,Jr,,,MS,, Baylor College of Medicine,19,Yes,Yes,,,,,,,,,,Recent CGG,17,Yes,Yes,,,,,,,,MS,PhD,Recent Citi,27/28,Yes,,,Yes,,,Jr,Sr,,,, 我的名单应该是['AIG','Baylor医学院','CGG','Ci

我有一个包含多行的字符串。每行用“\n”分隔,每个单词后都包含逗号。我想将每行中的第一个单词存储到一个列表中

以下是字符串输出:

AIG,10,,,,Yes,,,Jr,,,MS,,
Baylor College of Medicine,19,Yes,Yes,,,,,,,,,,Recent
CGG,17,Yes,Yes,,,,,,,,MS,PhD,Recent
Citi,27/28,Yes,,,Yes,,,Jr,Sr,,,,
我的名单应该是
['AIG','Baylor医学院','CGG','Citi']

我曾考虑在第一个逗号后使用split,然后转到下一行,但我不知道如何实现这一点


我的解决方案是返回我的代码,搜索我以前创建的“公司”列表。

公司=

[代码><码><代码><码>[美国政府,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,全部\n']

cmpny_name = []
for i  in companies:
    cmpny_name.append(i.split(',', 1)[0])

cmpny_name = [c.replace('\xa0', ' ') for c in cmpny_name]
print(cmpny_name)

OUTPUT:['AIG', 'Baylor College of Medicine', 'CGG', 'Citi', 'ExxonMobil', 'Flow-Cal Inc.', 'Global Shop Solutions', 'Harris County CTS', 'HCSS', 'Hitachi Consulting', 'HP Inc.', 'INT Inc.']

我会使用
split
两次:

lines = string.split('\n')
output = [line.split(',')[0] for line in lines]

您可以使用
regex

>>> import re
>>> b=sum([re.findall(r'^[^,]+(?=,)', i) for i in a], [])
>>> b
['AIG', 'Baylor\xa0College\xa0of\xa0Medicine', 'CGG', 'Citi', 'ExxonMobil', 'Flow-Cal\xa0Inc.', 'Global\xa0Shop\xa0Solutions']

我想稍微简化一下@Amely的回答

from pprint import pprint
a="this is line 1\nthat is line 2\nthose are line3\nbill was here\nbob was here"
first = [line.split(' ')[0] for line in a.split('\n')]
pprint(first)
你将得到每行的第一个单词

['this', 'that', 'those', 'bill', 'bob']
一行



yourstring.split返回所有行的列表,在每一行中,您将其拆分为一个以逗号分隔的列表,然后在此列表中选择第一个元素

看起来您正在尝试处理csv文件。你检查了csv模块了吗?您还可以使用
str.partition
执行以下操作this@styvane更正这是一个csv文件。第一次使用python中的csv文件。我查看了csv模块,没有发现任何对我的技能水平有帮助的东西。然而,我已经找到了一个有效的解决方案,但是使用了split。您不应该使用
split
。最好使用
str.partition
如果你不想使用csv模块OK,我不知道
str.partition
你也可以做
str.split(',',',1)[0]
,它的性能应该与
str.partition
@styvane你能解释为什么我们更喜欢
output=[line.partition(',,')[0]对于行中的行
over
output=[line.split(',')[0]对于行中的行]
?还是我误解了
str.partition
?@Aemyl的用法?因为您只需要拆分字符串一次,所以
str.partition
的性能在技术上更好。对于短文件中相对较短的行,差异不会那么明显。我在拆分空格,而不是逗号,但我总是喜欢学习e最终用户要做的事情:)
mylist = [line.split(',')[0] for line in yourstring.split('\n')]