Python 搜索列表中的未知项并附加到变量

Python 搜索列表中的未知项并附加到变量,python,string,list,Python,String,List,我需要从文件中收集组件列表。组件始终采用相同的格式,即“(空间)(空间)(组件)(空间)” 以下是文件的格式化方式 C500 1u 10 10 f PN"00210856" "CAP 1uF 10% 0805"; C501 1n 10 10 f PN"00072210" "CAP 1nF 10% 0402"; C502 22n 10 10 f PN"00196403" "CAP 22nF 10%

我需要从文件中收集组件列表。组件始终采用相同的格式,即“(空间)(空间)(组件)(空间)”

以下是文件的格式化方式

  C500          1u    10    10 f PN"00210856" "CAP 1uF 10% 0805";
  C501          1n    10    10 f PN"00072210" "CAP 1nF 10% 0402";
  C502         22n    10    10 f PN"00196403" "CAP 22nF 10% 0603";
  C503      9.999p    10    10 f PN"C_NF" "NO FIT CAPACITOR";
  C504      9.999p    10    10 f PN"C_NF" "NO FIT CAPACITOR";
  C505      9.999p    10    10 f PN"C_NF" "NO FIT CAPACITOR";
我有一个包含这些数据的列表,我只需要组件即C500、C501等。一些组件的长度超过4个字符


我希望输出是Components='C500'、'C501'、'C502'…

打开文件,并为每一行在空白处拆分它,并获取第一项

组件=[]
打开(components.txt)作为文件:
对于文件中的行:
component=line.split()[0]
components.append(组件)
在你的帖子中,你说这是一个文件,但在你的评论中,你说这是一个字符串列表。以下是列表版本:

组件=[]
对于_组件_数据中的行:
component=line.split()[0]
components.append(组件)

您说过这是一个字符串列表,而整个示例是一个字符串,这似乎有点矛盾。下面假设您将所有内容都作为一个字符串,但可以很容易地调整为字符串列表

data = """  C500          1u    10    10 f PN"00210856" "CAP 1uF 10% 0805";
  C501          1n    10    10 f PN"00072210" "CAP 1nF 10% 0402";
  C502         22n    10    10 f PN"00196403" "CAP 22nF 10% 0603";
  C503      9.999p    10    10 f PN"C_NF" "NO FIT CAPACITOR";
  C504      9.999p    10    10 f PN"C_NF" "NO FIT CAPACITOR";
  C505      9.999p    10    10 f PN"C_NF" "NO FIT CAPACITOR";"""

components = ["'"+line.split()[0]+"'" for line in data.splitlines()]
print("components =", ",".join(components))
data = ['C500          1u    10    10 f PN"00210856" "CAP 1uF 10% 0805";',
        'C501          1n    10    10 f PN"00072210" "CAP 1nF 10% 0402";',
        'C502         22n    10    10 f PN"00196403" "CAP 22nF 10% 0603";',
        'C503      9.999p    10    10 f PN"C_NF" "NO FIT CAPACITOR";',
        'C504      9.999p    10    10 f PN"C_NF" "NO FIT CAPACITOR";',
        'C505      9.999p    10    10 f PN"C_NF" "NO FIT CAPACITOR";'
        ]

components = ["'"+line.split()[0]+"'" for line in data]
print("components =", ",".join(components))
输出

components = 'C500','C501','C502','C503','C504','C505'
进一步的例子,如果你有一个字符串列表

data = """  C500          1u    10    10 f PN"00210856" "CAP 1uF 10% 0805";
  C501          1n    10    10 f PN"00072210" "CAP 1nF 10% 0402";
  C502         22n    10    10 f PN"00196403" "CAP 22nF 10% 0603";
  C503      9.999p    10    10 f PN"C_NF" "NO FIT CAPACITOR";
  C504      9.999p    10    10 f PN"C_NF" "NO FIT CAPACITOR";
  C505      9.999p    10    10 f PN"C_NF" "NO FIT CAPACITOR";"""

components = ["'"+line.split()[0]+"'" for line in data.splitlines()]
print("components =", ",".join(components))
data = ['C500          1u    10    10 f PN"00210856" "CAP 1uF 10% 0805";',
        'C501          1n    10    10 f PN"00072210" "CAP 1nF 10% 0402";',
        'C502         22n    10    10 f PN"00196403" "CAP 22nF 10% 0603";',
        'C503      9.999p    10    10 f PN"C_NF" "NO FIT CAPACITOR";',
        'C504      9.999p    10    10 f PN"C_NF" "NO FIT CAPACITOR";',
        'C505      9.999p    10    10 f PN"C_NF" "NO FIT CAPACITOR";'
        ]

components = ["'"+line.split()[0]+"'" for line in data]
print("components =", ",".join(components))

只需过滤第一列您是否从文本文件中读取此数据这是一个字符串列表。因此,整个示例是一个字符串。如果参数为
split()
,它是否会在有多个空格的地方生成无关的空项?它会。但是,除非组件名称前面有空格,否则这无关紧要。如果有,请首先使用
strip()
。您可能希望将其添加到您的答案中,因为问题明确提到在他要查找的项目之前有两个空格。更好的解决方案可能是省略
split()
的参数。这是文件、字符串还是字符串列表?你在这三个之间跳来跳去,它们很难互换。也有可能您使用了
split(“”)
而不是
split(“”)
对不起,这是我的错。我使用了整个字符串而不是字符串列表。数据来自一个文件,我将其转换为字符串列表。