【问题标题】:How to find commas amongst any letters in strings and remove commas using regex?如何在字符串中的任何字母中查找逗号并使用正则表达式删除逗号?
【发布时间】:2017-09-28 17:53:45
【问题描述】:

我使用代码: 导入系统 导入操作系统 重新导入

fa = open('C:\\file1.txt', 'r')
fb = open('C:\\file2.txt', 'w')
for line in fa:
    fb.write(line.replace(([a-z][\,][a-z]),([a-z][a-z]))
fa.close()            
fb.close()

file1.txt 包含字符串Save,Buy,GoBuild,do,it。我需要正则表达式来将字符串更改为 SaveBuyG Builddoit。

我在上面尝试了regex,但它不起作用。我需要在字母之间用逗号查找字符串部分。

读取file1时,字符串中的逗号应删除(注意单词之间没有空格),以便以标准方式转换为csv。

如果代码与正则表达式不兼容,您可以粘贴必要的代码吗?

【问题讨论】:

    标签: python regex string csv


    【解决方案1】:

    您可以将re module 中的re.sublookahead assertions 一起使用:

    >>> re.sub('([a-zA-Z]),(?=[a-zA-Z])', r'\1', 'SaveBuyGo Builddoit to Builddoit 1,2 a,b,c,d Save,Buy,Go') 
    'SaveBuyGo Builddoit to Builddoit 1,2 abcd SaveBuyGo'
    

    请注意,它会删除Builddo 之间的逗号,但不会删除12 之间的逗号。

    【讨论】:

    • 这不会完全满足用户的要求。 re.sub('([a-z]),(?=[a-z])', r'\1', 'Save,Buy,Go') == 'Save,Buy,Go'。您可能希望使用与 [a-z] 不同的匹配项
    【解决方案2】:

    您不能将正则表达式与 string.replace 函数一起使用。在您的情况下,如果您坚持使用正则表达式,则可以使用 re 包:

    import re
    re.sub(r'([A-Za-z]),([A-Za-z])', r'\1\2','Save,Buy,Go , Build,do,it')
    

    输出将是:

    'SaveBuyGo , Builddoit'
    

    【讨论】:

      【解决方案3】:
      fileinput = open('INFILE.txt', 'r')
      fileoutput = fileinput.read()
      #fileinput.close()
      replace = re.sub(r'([A-Za-z]),([A-Za-z])', r'\1', fileoutput)
      print replace
      replaceout = open('OUTFILE.txt', 'w')
      replaceout.write(replace)
      
      #CHANGE TO r'\1' OR r'\1\2' DEPENDING HOW MANY COMMAS YOU SEE AMONG LETTERS
      #WORKING CODE TO READ FILE FINDING AND DELETING COMMAS AMONG LETTERS AND 
      #WRITING TO NEW FILE
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-13
        • 2017-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多