【问题标题】:Python Search and Replace new linesPython 搜索和替换新行
【发布时间】:2018-07-15 05:40:23
【问题描述】:

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

之前 =>

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 库时,我只能找到替换单词的示例,而不是换行符。

【问题讨论】:

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

标签: python regex


【解决方案1】:

也许这就是你要找的东西:

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

首先,我们需要使用“项目 ID:”拆分记录。去除每行前导和尾随空格,然后跳过空行。对于剩余的行,我们在前面加上“项目 ID:”,因为它已被拆分删除。然后我们执行 2 个正则表达式替换:

  1. 在包含“标签”的地方用“:”替换换行符,即。以冒号、可能的空格和换行符结尾。
  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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2015-09-25
    相关资源
    最近更新 更多