【问题标题】:Use regex and python to arrange text file output regex.sub使用正则表达式和python排列文本文件输出regex.sub
【发布时间】:2019-04-07 13:08:56
【问题描述】:
import re
import fileinput
import re

#regex used
#result = re.split('(?<=\S)[^-][ ](?=[a-zA-Z0-9])', line)

result = re.split('(?&lt;=\S$)[^-][ ](?=[a-zA-Z0-9])', line)

line = "WordsAreStickedTogetherHereIneedOneSpaceBetweeeThem"

result = re.split('(?<=\S$)[^-][ ](?=[a-zA-Z0-9])', line)

final_result = re.sub('dM','d M',result)
final_result = re.sub('dJ','d J',result)

for elem in final_result:
        print elem


ERRROR:

$python main.py
Traceback (most recent call last):
  File "main.py", line 22, in <module>
    final_result = re.sub('dC','d C',result)
  File "/usr/lib64/python2.7/re.py", line 155, in sub
    return _compile(pattern, flags).sub(repl, string, count)
TypeError: expected string or buffer

【问题讨论】:

  • 我没有看到明确的问题陈述。我确实看到的一个问题是您正在尝试使用带有re.split 的环视。你不能这样做,所以我建议添加一些示例数据来解释问题。
  • 您是否尝试将WordsAreSticked 转换为Words Are Sticked
  • 是的@cglacet,但我知道大写字母之前的确切字母顺序需要留出一个空格(不是大写后跟小写),序列“”在两者之间,然后我需要写在换行符上。所以它是 SequenceOfLettersUPPERCASE 必须是 sequenceofletter" " UPPERCASE" 这只是为了在未分隔的单词之间创建空格,然后写在 Name1 - Adress1 newline Name2 - Adress2 等换行符序列上(想想它,就像 Adress1 贴了两个词together" re.finditer 想要一个字符串,我可以将我的 results=re.split 转换回字符串吗?如何?

标签: python regex file text


【解决方案1】:

如果你只需要拆分单词(一个单词是一个大写字母后跟小写字母),那么你可以简单地使用re.finditer

line = "WordsAreStickedTogetherHereINeedOneSpaceBetweeeThem"
matches = re.finditer("[A-Z][a-z]*", line)
new_line = " ".join(match.group() for match in matches)

变量new_line 包含:

>>> print(new_line)
'Words Are Sticked Together Here I Need One Space Betweee Them'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 2018-08-05
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多