Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用正则表达式分隔文本并写入唯一列_Python_Regex - Fatal编程技术网

Python 使用正则表达式分隔文本并写入唯一列

Python 使用正则表达式分隔文本并写入唯一列,python,regex,Python,Regex,我有一个CSV文件,其中有一列a,其中包含格式化为字符串的项目列表 1-项目A 1-项目B 1-项目C 实际字符串减去Excel格式为1-项目A1-项目B1-项目C…因为项目名称结束后没有空格 我希望用python编写一个函数,将这些项中的每一项隔离开来,并写入到单独的列中,这样新的列1只包含项a,新的列2只包含项B,依此类推 1空格破折号空格始终标记新项目的开始。尽管它可以从任何数字1-9开始。项目字母A、B、C等后面没有空格 此外,一个字符串中可能有1-10个项目,因此为了安全起见,我想创建

我有一个CSV文件,其中有一列a,其中包含格式化为字符串的项目列表

1-项目A 1-项目B 1-项目C

实际字符串减去Excel格式为1-项目A1-项目B1-项目C…因为项目名称结束后没有空格

我希望用python编写一个函数,将这些项中的每一项隔离开来,并写入到单独的列中,这样新的列1只包含项a,新的列2只包含项B,依此类推

1空格破折号空格始终标记新项目的开始。尽管它可以从任何数字1-9开始。项目字母A、B、C等后面没有空格

此外,一个字符串中可能有1-10个项目,因此为了安全起见,我想创建10个新列,并根据需要映射到这些列


非常感谢您对regex/python组合的任何帮助。有点不切实际…

如果您有一个1-项目A1-项目B1-项目C形式的字符串,其中1可以是任何其他单个数字,但数字后面有一个空格,顺便提一下,连字符与破折号不同,另一个空格分隔项目,则您可以:

import re

s = '1 - Item A5 - Item B7 - Item C8 - Item D'
m = re.split('\d - ', s)

print(m[1:])
# Output: ['Item A', 'Item B', 'Item C', 'Item D']
如果您想要此标题的匹配列表,可以执行以下操作:

headers = ["New Column %d" % i for i in range(1,len(m)) ]
# This gives you ['New Column 1', 'New Column 2', 'New Column 3', 'New Column 4']
现在您可以创建一个新的CSV文件,并为第一行写入“,”.joinheaders,为第二行写入“,”.joinm[1:]。

像这样吗\d-项目[A-Z]