首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAS/Python:查找后跟非空格字符串的任何空格,并用不同的值替换空格

SAS/Python:查找后跟非空格字符串的任何空格,并用不同的值替换空格
EN

Stack Overflow用户
提问于 2021-06-17 04:26:34
回答 2查看 34关注 0票数 0

我有如下所示的数据:

代码语言:javascript
复制
1937   Paredes         3-1
1939   Suazo            2-0
1941   Fernandez     4-0
1944   Wilchez        2-1
…   
2017   Miralles       5-7

我想把每一行都当作一行文本来读。查找后跟数字、字符或任何非空格符号的空格的任意实例。按以下方式将该数字、字符或任何非空格符号前面的空格替换为"|“:

代码语言:javascript
复制
1937  |Paredes        |3-1
1939  |Suazo           |2-0
1941  |Fernandez    |4-0
1944  |Wilchez       |2-1
...
2017  |Miralles       |5-7

你知道如何在SAS或Python中这样做吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-17 04:32:26

您可以使用re.sub匹配一个空格,并在右侧断言一个非空格字符:

代码语言:javascript
复制
import re

test_str = ("1937 Paredes 3-1\n\n"
            "1939 Suazo 2-0\n\n"
            "1941 Fernandez 4-0\n\n"
            "1944 Wilchez 2-1")

result = re.sub(r" (?=\S)", "|", test_str)
if result:
    print (result)

输出

代码语言:javascript
复制
1937|Paredes|3-1

1939|Suazo|2-0

1941|Fernandez|4-0

1944|Wilchez|2-1

或查找不带换行符的多个空格字符

代码语言:javascript
复制
result = re.sub(r"[^\S\r\n]+(?=\S)", "|", test_str)
票数 1
EN

Stack Overflow用户

发布于 2021-06-17 05:20:43

我不明白保留其他空间的必要性。为什么不把它们全部删除呢?

代码语言:javascript
复制
data _null_;
  infile 'have.txt' truncover;
  file 'want.txt' dsd dlm='|';
  input (var1-var3) (:$100.);
  put var1-var3;
run;

结果

代码语言:javascript
复制
1937|Paredes|3-1
1939|Suazo|2-0
1941|Fernandez|4-0
1944|Wilchez|2-1
2017|Miralles|5-7
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68009607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档