Python搜索和替换新行

Python搜索和替换新行,python,regex,Python,Regex,我正在尝试将多行记录从以下内容转换为单行记录 之前=> Item ID: 504246 Teddy Ruxpin, Stuffed Animal, Bear Item Price: $34.50 Status: Discontinued Ages: 4-9 Qty: 895 Item ID: 783927 Monopoly, Board Game Item Price: $29.67 Status: Active Ages: 8+ Qty: 190200 之后=> Item ID: 50

我正在尝试将多行记录从以下内容转换为单行记录

之前=>

Item ID:
504246
Teddy Ruxpin, 
Stuffed Animal, Bear
Item Price:
$34.50
Status:
Discontinued
Ages:
4-9
Qty:
895

Item ID:
783927
Monopoly, 
Board Game
Item Price:
$29.67
Status:
Active
Ages:
8+
Qty:
190200
之后=>

Item ID: 504246, Teddy Ruxpin, Stuffed Animal, Bear, Item Price: $34.50, Status: Discontinued, Ages: 4-9, Qty: 895

Item ID:, 783927, Monopoly, Board Game, Item Price: $29.67, Status: Active, Ages: 8+, Qty: 190200

然而,每当我查找不同的Python库时,我只会找到替换单词的示例,而不是新行。

也许这就是您要查找的:

import re

datastring = """Item ID:
504246
Teddy Ruxpin, 
Stuffed Animal, Bear
Item Price:
$34.50
Status:
Discontinued
Ages:
4-9
Qty:
895

Item ID:
783927
Monopoly, 
Board Game
Item Price:
$29.67
Status:
Active
Ages:
8+
Qty:
190200
"""

separator=";"
for line in datastring.split("Item ID:"):
    line = line.strip()
    if not line:
        continue
    line = "Item ID: %s" % line
    line = re.sub(r":\w*\n",": ",line,re.M)
    line = re.sub(r"\n","%s "%separator,line,re.M)
    print line
首先,我们需要使用“Item ID:”分割记录。去掉每行的前导和尾随空格,然后跳过空行。对于其余的行,我们在“Item ID:”前面加上前缀,因为它是通过split删除的。然后我们执行2个正则表达式替换:

  • 将新行字符替换为“:”来自包含“标签”的位置,即以冒号结尾、可能的空格和新行字符
  • 用选定的分隔符替换所有剩余的新行字符(我在代码中使用了分号)
  • 作为for循环的最后一步,我打印这行。输出如下所示:

    Item ID: 504246; Teddy Ruxpin, ; Stuffed Animal, Bear; Item Price: $34.50; Status: Discontinued; Ages: 4-9; Qty: 895
    Item ID: 783927; Monopoly, ; Board Game; Item Price: $29.67; Status: Active; Ages: 8+; Qty: 190200
    

    请指定哪一个在您期望的之前,哪一个在之后。此外,请提供您所做的尝试。它是csv文件吗?是否有分隔符?是否要将其存储在单个词典列表中?是否可以假定这些项已标准化?在输入中使用了各种分隔符。