python - 将换行符和 XML 标签替换为 ','

标签 python xml regex

我有一个如下所示的 XML 文档:

  <file>
    <name>NAME_OF_FILE</name>
  </file>
  <file>
    <name>NAME_OF_FILE</name>
  </file>

我正在尝试编写一个 Python 脚本,它将用“,”替换所有换行符、标签和标签之间的空格(即不是元素本身)。

上述文件的输出应如下所示:

NAME_OF_FILE','NAME_OF_FILE','NAME_OF_FILE','

这是我到目前为止所得到的。我无法准确理解 Python 如何处理换行符:

import sys
import os
import re

source = r'c:\A\grepper.txt'

f = open(source,'r')
out = open(r'c:\A\bout.txt', 'a')

for line in f:
    one = re.sub(r"\n", '', line)
    two = re.sub(r"\r", '', one)
    three = re.sub(r'</name>.*<name>', '\',\'', two)
    out.write(three)

out.close()

最佳答案

删除 r,因为它们逐字引用字符串。

one = re.sub("\n", '', line)
two = re.sub("\r", '', one)

您还可以使用 string.replace() 进行这些简单的替换,以及将它们合并到一行中。

line = re.sub('r</name>.*<name>', "','", line.replace('\n', '').replace('\r', ''))
out.write(line)

但是,这仍然不能解决获得所需输出的问题。我建议为此执行以下操作:

results = []
for line in f:
    match = re.search(r'<name>(.*)</name>', line)
    if match:
        results.append(match.group(1))
print >>out, "','".join(results)

这是它的工作原理:http://ideone.com/ik48G

关于python - 将换行符和 XML 标签替换为 ',',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4549459/

相关文章:

python - 如何在 Linux 上的 Python 中检查进程是否处于事件状态?

java - 用于不带命名空间的子树的 XmlstreamWriter 和 Jaxb

java - 来自 XML 的动态 java

Java 正则表达式字符串 : Check if ip:port string contains a valid IPv4 or DNS address

regex - sed/awk 将代码片段从一个地方复制到同一文件中的另一个地方

javascript - 如何使用正则表达式匹配高值 unicode 字符?

python - 如何在 python 中用一个变量替换 %s

python - 如何在 Django 中发送具有特定 mimetype 的电子邮件?

java - JAXB 内部元素被忽略

python - 如何创建可重复使用的 basemap